Merge tag 'l10n-2.8.0-rnd3' of git://github.com/git-l10n/git-po
authorJunio C Hamano <gitster@pobox.com>
Mon, 21 Mar 2016 01:06:05 +0000 (18:06 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 21 Mar 2016 01:06:05 +0000 (18:06 -0700)
l10n-2.8.0-rnd3

* tag 'l10n-2.8.0-rnd3' of git://github.com/git-l10n/git-po:
l10n: zh_CN: review for git v2.8.0 l10n round 2
l10n: de.po: add missing newlines
l10n: de.po: translate 22 new messages
l10n: ko.po: Update Korean translation
l10n: fr.po v2.8.0 round 3
l10n: sv.po: Update Swedish translation (2530t0f0u)
l10n: ru.po: update Russian translation

31 files changed:
Documentation/RelNotes/2.4.11.txt [new file with mode: 0644]
Documentation/RelNotes/2.5.5.txt [new file with mode: 0644]
Documentation/RelNotes/2.6.6.txt [new file with mode: 0644]
Documentation/RelNotes/2.7.4.txt [new file with mode: 0644]
Documentation/RelNotes/2.8.0.txt
Documentation/git-check-ignore.txt
Documentation/git-svn.txt
Documentation/git.txt
Documentation/gitignore.txt
GIT-VERSION-GEN
Makefile
config.mak.uname
configure.ac
connect.c
dir.c
dir.h
git-rebase--interactive.sh
git-sh-setup.sh
git-svn.perl
gitk-git/gitk
gitk-git/po/bg.po
gitk-git/po/de.po
gitk-git/po/fr.po
perl/Git/SVN/GlobSpec.pm
t/t3001-ls-files-others-exclude.sh
t/t3007-ls-files-other-negative.sh [deleted file]
t/t9108-git-svn-glob.sh
t/t9109-git-svn-multi-glob.sh
t/t9117-git-svn-init-clone.sh
t/t9168-git-svn-partially-globbed-names.sh [new file with mode: 0755]
transport.c
diff --git a/Documentation/RelNotes/2.4.11.txt b/Documentation/RelNotes/2.4.11.txt
new file mode 100644 (file)
index 0000000..7233602
--- /dev/null
@@ -0,0 +1,11 @@
+Git v2.4.11 Release Notes
+=========================
+
+Fixes since v2.4.10
+-------------------
+
+ * Bugfix patches were backported from the 'master' front to plug heap
+   corruption holes, to catch integer overflow in the computation of
+   pathname lengths, and to get rid of the name_path API.  Both of
+   these would have resulted in writing over an under-allocated buffer
+   when formulating pathnames while tree traversal.
diff --git a/Documentation/RelNotes/2.5.5.txt b/Documentation/RelNotes/2.5.5.txt
new file mode 100644 (file)
index 0000000..37eae9a
--- /dev/null
@@ -0,0 +1,11 @@
+Git v2.5.5 Release Notes
+========================
+
+Fixes since v2.5.4
+------------------
+
+ * Bugfix patches were backported from the 'master' front to plug heap
+   corruption holes, to catch integer overflow in the computation of
+   pathname lengths, and to get rid of the name_path API.  Both of
+   these would have resulted in writing over an under-allocated buffer
+   when formulating pathnames while tree traversal.
diff --git a/Documentation/RelNotes/2.6.6.txt b/Documentation/RelNotes/2.6.6.txt
new file mode 100644 (file)
index 0000000..023ad85
--- /dev/null
@@ -0,0 +1,11 @@
+Git v2.6.6 Release Notes
+========================
+
+Fixes since v2.6.5
+------------------
+
+ * Bugfix patches were backported from the 'master' front to plug heap
+   corruption holes, to catch integer overflow in the computation of
+   pathname lengths, and to get rid of the name_path API.  Both of
+   these would have resulted in writing over an under-allocated buffer
+   when formulating pathnames while tree traversal.
diff --git a/Documentation/RelNotes/2.7.4.txt b/Documentation/RelNotes/2.7.4.txt
new file mode 100644 (file)
index 0000000..883ae89
--- /dev/null
@@ -0,0 +1,11 @@
+Git v2.7.4 Release Notes
+========================
+
+Fixes since v2.7.3
+------------------
+
+ * Bugfix patches were backported from the 'master' front to plug heap
+   corruption holes, to catch integer overflow in the computation of
+   pathname lengths, and to get rid of the name_path API.  Both of
+   these would have resulted in writing over an under-allocated buffer
+   when formulating pathnames while tree traversal.
index 14b6c70ed6a64cae8d75fd0de863f66597c67da8..5ec39bc300998a1d3add97026a46030cbc4b1926 100644 (file)
@@ -16,7 +16,9 @@ UI, Workflows & Features
    the source repository has packed references for a long time, and
    nobody noticed nor complained about it.
 
- * "branch --delete" has "branch -d" but "push --delete" does not.
+ * "push" learned that its "--delete" option can be shortened to
+   "-d", just like "branch --delete" and "branch -d" are the same
+   thing.
 
  * "git blame" learned to produce the progress eye-candy when it takes
    too much time before emitting the first line of the result.
@@ -131,8 +133,8 @@ UI, Workflows & Features
 
  * Across the transition at around Git version 2.0, the user used to
    get a pretty loud warning when running "git push" without setting
-   push.default configuration variable.  We no longer warn, given that
-   the transition is over long time ago.
+   push.default configuration variable.  We no longer warn because the
+   transition was completed a long time ago.
 
  * README has been renamed to README.md and its contents got tweaked
    slightly to make it easier on the eyes.
@@ -143,8 +145,8 @@ Performance, Internal Implementation, Development Support etc.
  * Add a framework to spawn a group of processes in parallel, and use
    it to run "git fetch --recurse-submodules" in parallel.
 
- * A slight update to the Makefile to mark "phoney" targets
-   as such correctly.
+ * A slight update to the Makefile to mark ".PHONY" targets as such
+   correctly.
 
  * In-core storage of the reverse index for .pack files (which lets
    you go from a pack offset to an object name) has been streamlined.
@@ -187,14 +189,8 @@ Performance, Internal Implementation, Development Support etc.
  * Some calls to strcpy(3) triggers a false warning from static
    analysers that are less intelligent than humans, and reducing the
    number of these false hits helps us notice real issues.  A few
-   calls to strcpy(3) in test-path-utils that are already safe has
-   been rewritten to avoid false wanings.
-
- * Some calls to strcpy(3) triggers a false warning from static
-   analysers that are less intelligent than humans, and reducing the
-   number of these false hits helps us notice real issues.  A few
-   calls to strcpy(3) in "git rerere" that are already safe has been
-   rewritten to avoid false wanings.
+   calls to strcpy(3) in a couple of protrams that are already safe
+   has been rewritten to avoid false warnings.
 
  * The "name_path" API was an attempt to reduce the need to construct
    the full path out of a series of path components while walking a
@@ -240,6 +236,23 @@ Performance, Internal Implementation, Development Support etc.
  * Out of maintenance gcc on OSX 10.6 fails to compile the code in
    'master'; work it around by using clang by default on the platform.
 
+ * The "name_path" API was an attempt to reduce the need to construct
+   the full path out of a series of path components while walking a
+   tree hierarchy, but over time made less efficient because the path
+   needs to be flattened, e.g. to be compared with another path that
+   is already flat, in many cases.  The API has been removed and its
+   users have been rewritten to simplify the overall code complexity.
+   This incidentally also closes some heap-corruption holes.
+
+ * Recent versions of GNU grep is pickier than before to decide if a
+   file is "binary" and refuse to give line-oriented hits when we
+   expect it to, unless explicitly told with "-a" option.  As our
+   scripted Porcelains use sane_grep wrapper for line-oriented data,
+   even when the line may contain non-ASCII payload we took from
+   end-user data, use "grep -a" to implement sane_grep wrapper when
+   using an implementation of "grep" that takes the "-a" option.
+
+
 
 Also contains various documentation updates and code clean-ups.
 
@@ -281,11 +294,6 @@ notes for details).
    listing and sparse checkout selection areas in 2.7.0; the change
    that is responsible for the regression has been reverted.
 
- * Another try to improve the ignore mechanism that lets you say "this
-   is excluded" and then later say "oh, no, this part (that is a
-   subset of the previous part) is not excluded".  This has still a
-   known limitation, though.
-
  * Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
    (e.g. COMMIT_EDITMSG) that is meant to be left after the command is
    done.  This however did not work well if the repository is set to
@@ -334,7 +342,7 @@ notes for details).
  * dirname() emulation has been added, as Msys2 lacks it.
 
  * The underlying machinery used by "ls-files -o" and other commands
-   have been taught not to create empty submodule ref cache for a
+   has been taught not to create empty submodule ref cache for a
    directory that is not a submodule.  This removes a ton of wasted
    CPU cycles.
 
index f60ee051f8c0e930e790add0bd1be39f49c82785..e94367a5ed8e8b94bca7036ff7616bc3cfa9ca97 100644 (file)
@@ -114,7 +114,6 @@ SEE ALSO
 linkgit:gitignore[5]
 linkgit:gitconfig[5]
 linkgit:git-ls-files[1]
-GIT_TRACE_EXCLUDE in linkgit:git[1]
 
 GIT
 ---
index 0c0f60b20e32b11a3547450e79a4bff4f404916b..fb23a98a17df5eae1811d8b674ebcfd56122196a 100644 (file)
@@ -1034,6 +1034,8 @@ listed below are allowed:
        url = http://server.org/svn
        fetch = trunk/project-a:refs/remotes/project-a/trunk
        branches = branches/*/project-a:refs/remotes/project-a/branches/*
+       branches = branches/release_*:refs/remotes/project-a/branches/release_*
+       branches = branches/re*se:refs/remotes/project-a/branches/*
        tags = tags/*/project-a:refs/remotes/project-a/tags/*
 ------------------------------------------------------------------------
 
@@ -1044,6 +1046,16 @@ independent path component (surrounded by '/' or EOL).   This
 type of configuration is not automatically created by 'init' and
 should be manually entered with a text-editor or using 'git config'.
 
+Also note that only one asterisk is allowed per word. For example:
+
+       branches = branches/re*se:refs/remotes/project-a/branches/*
+
+will match branches 'release', 'rese', 're123se', however
+
+       branches = branches/re*s*e:refs/remotes/project-a/branches/*
+
+will produce an error.
+
 It is also possible to fetch a subset of branches or tags by using a
 comma-separated list of names within braces. For example:
 
index 951b24661e45ffe8b11444166e3a6cc7a3c6e1d2..a9120a8779ce8c4a9e2fda781add92eaec60d055 100644 (file)
@@ -51,9 +51,10 @@ Documentation for older releases are available here:
   link:RelNotes/2.7.1.txt[2.7.1],
   link:RelNotes/2.7.0.txt[2.7].
 
-* link:v2.6.5/git.html[documentation for release 2.6.5]
+* link:v2.6.6/git.html[documentation for release 2.6.6]
 
 * release notes for
+  link:RelNotes/2.6.6.txt[2.6.6],
   link:RelNotes/2.6.5.txt[2.6.5],
   link:RelNotes/2.6.4.txt[2.6.4],
   link:RelNotes/2.6.3.txt[2.6.3],
@@ -61,18 +62,20 @@ Documentation for older releases are available here:
   link:RelNotes/2.6.1.txt[2.6.1],
   link:RelNotes/2.6.0.txt[2.6].
 
-* link:v2.5.4/git.html[documentation for release 2.5.4]
+* link:v2.5.5/git.html[documentation for release 2.5.5]
 
 * release notes for
+  link:RelNotes/2.5.5.txt[2.5.5],
   link:RelNotes/2.5.4.txt[2.5.4],
   link:RelNotes/2.5.3.txt[2.5.3],
   link:RelNotes/2.5.2.txt[2.5.2],
   link:RelNotes/2.5.1.txt[2.5.1],
   link:RelNotes/2.5.0.txt[2.5].
 
-* link:v2.4.10/git.html[documentation for release 2.4.10]
+* link:v2.4.11/git.html[documentation for release 2.4.11]
 
 * release notes for
+  link:RelNotes/2.4.11.txt[2.4.11],
   link:RelNotes/2.4.10.txt[2.4.10],
   link:RelNotes/2.4.9.txt[2.4.9],
   link:RelNotes/2.4.8.txt[2.4.8],
@@ -1066,11 +1069,6 @@ of clones and fetches.
        cloning of shallow repositories.
        See 'GIT_TRACE' for available trace output options.
 
-'GIT_TRACE_EXCLUDE'::
-       Enables trace messages that can help debugging .gitignore
-       processing. See 'GIT_TRACE' for available trace output
-       options.
-
 'GIT_LITERAL_PATHSPECS'::
        Setting this variable to `1` will cause Git to treat all
        pathspecs literally, rather than as glob patterns. For example,
@@ -1129,7 +1127,7 @@ of clones and fetches.
            connection (or proxy, if configured)
 
          - `ssh`: git over ssh (including `host:path` syntax,
-           `git+ssh://`, etc).
+           `ssh://`, etc).
 
          - `http`: git over http, both "smart http" and "dumb http".
            Note that this does _not_ include `https`; if you want both,
index 91d1ce2a89e6a180b934ab8836c41affdb2751ce..473623d6318a859c9ed2cf600222ea6cb4a25d4c 100644 (file)
@@ -82,12 +82,12 @@ PATTERN FORMAT
 
  - An optional prefix "`!`" which negates the pattern; any
    matching file excluded by a previous pattern will become
-   included again.
+   included again. It is not possible to re-include a file if a parent
+   directory of that file is excluded. Git doesn't list excluded
+   directories for performance reasons, so any patterns on contained
+   files have no effect, no matter where they are defined.
    Put a backslash ("`\`") in front of the first "`!`" for patterns
    that begin with a literal "`!`", for example, "`\!important!.txt`".
-   It is possible to re-include a file if a parent directory of that
-   file is excluded if certain conditions are met. See section NOTES
-   for detail.
 
  - If the pattern ends with a slash, it is removed for the
    purpose of the following description, but it would only find
@@ -141,51 +141,6 @@ not tracked by Git remain untracked.
 To stop tracking a file that is currently tracked, use
 'git rm --cached'.
 
-To re-include files or directories when their parent directory is
-excluded, the following conditions must be met:
-
- - The rules to exclude a directory and re-include a subset back must
-   be in the same .gitignore file.
-
- - The directory part in the re-include rules must be literal (i.e. no
-   wildcards and has to start with a `/`).
-
-A re-inclusion of a directory makes all files in the directory
-unignored.  For example, suppose you have files `.gitignore`,
-`dir/file1`, `dir/file2`, and `dir/file3`, and have the following in
-your `.gitignore`:
-
-----------------
-# .gitignore is not mentioned in .gitignore
-*
-!/dir
-# dir/file1 is not mentioned in .gitignore
-dir/file2
-!dir/file3
-----------------
-
-Then:
-
- - `.gitignore` gets ignored, because it matches the `*` at the top
-   level;
-
- - `dir/file1` does not get ignored, because `/dir` marks everything
-   underneath `dir/` directory to be 're-included' unless otherwise
-   specified;
-
- - `dir/file2` gets ignored, because `dir/file2` matches it.
-
- - `dir/file3` does not get ignored, because `!dir/file3` matches it.
-   Note that the entry `!dir/file3` is redundant because everything
-   underneath `dir/` is marked to be 're-included' already.
-
-Some earlier versions of Git treated `!/dir` above differently in
-that it did not cause the paths under it unignored (but merely told
-Git that patterns that begin with dir/ should not be ignored), but
-this has been corrected to be consistent with `/dir` that says "the
-directory `dir/` and everything below are ignored."
-
-
 EXAMPLES
 --------
 
index b373d8ae8ddfd828951c5d93cb9032de0071dfde..fb1cadf627fd1c08e47f98d75ff3d991ff8e1a77 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=GIT-VERSION-FILE
-DEF_VER=v2.8.0-rc2
+DEF_VER=v2.8.0-rc3
 
 LF='
 '
index 24bef8d4282baa7702d4386193c4291275c708c7..2742a6977c6ad871897bc758ea2a7d76359b1eee 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -264,6 +264,9 @@ all::
 #
 # Define NO_TCLTK if you do not want Tcl/Tk GUI.
 #
+# Define SANE_TEXT_GREP to "-a" if you use recent versions of GNU grep
+# and egrep that are pickier when their input contains non-ASCII data.
+#
 # The TCL_PATH variable governs the location of the Tcl interpreter
 # used to optimize git-gui for your system.  Only used if NO_TCLTK
 # is not set.  Defaults to the bare 'tclsh'.
@@ -1740,7 +1743,7 @@ common-cmds.h: $(wildcard Documentation/git-*.txt)
 
 SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\
        $(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
-       $(gitwebdir_SQ):$(PERL_PATH_SQ)
+       $(gitwebdir_SQ):$(PERL_PATH_SQ):$(SANE_TEXT_GREP)
 define cmd_munge_script
 $(RM) $@ $@+ && \
 sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
@@ -1752,6 +1755,7 @@ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
     -e $(BROKEN_PATH_FIX) \
     -e 's|@@GITWEBDIR@@|$(gitwebdir_SQ)|g' \
     -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
+    -e 's|@@SANE_TEXT_GREP@@|$(SANE_TEXT_GREP)|g' \
     $@.sh >$@+
 endef
 
index 4c68e078e7ac4a9584b2782f278b00fcbe594505..1139b4400743a8a9a687967a9dff5529d876b0c0 100644 (file)
@@ -37,6 +37,7 @@ ifeq ($(uname_S),Linux)
        HAVE_CLOCK_GETTIME = YesPlease
        HAVE_CLOCK_MONOTONIC = YesPlease
        HAVE_GETDELIM = YesPlease
+       SANE_TEXT_GREP=-a
 endif
 ifeq ($(uname_S),GNU/kFreeBSD)
        HAVE_ALLOCA_H = YesPlease
index 89e2590bd6926a52d8f57e0dfc164360809c90d2..0cd9f4680b84bccd0a98193c401b13749b05b833 100644 (file)
@@ -471,6 +471,13 @@ if test -n "$ASCIIDOC"; then
        esac
 fi
 
+if grep -a ascii configure.ac >/dev/null; then
+  AC_MSG_RESULT([Using 'grep -a' for sane_grep])
+  SANE_TEXT_GREP=-a
+else
+  SANE_TEXT_GREP=
+fi
+GIT_CONF_SUBST([SANE_TEXT_GREP])
 
 ## Checks for libraries.
 AC_MSG_NOTICE([CHECKS for libraries])
index 047863144f3f22fe36d178a00b116ee45c2e9e11..c53f3f1c55243feae8affbb268af689b35b9169f 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -267,9 +267,9 @@ static enum protocol get_protocol(const char *name)
                return PROTO_SSH;
        if (!strcmp(name, "git"))
                return PROTO_GIT;
-       if (!strcmp(name, "git+ssh"))
+       if (!strcmp(name, "git+ssh")) /* deprecated - do not use */
                return PROTO_SSH;
-       if (!strcmp(name, "ssh+git"))
+       if (!strcmp(name, "ssh+git")) /* deprecated - do not use */
                return PROTO_SSH;
        if (!strcmp(name, "file"))
                return PROTO_FILE;
diff --git a/dir.c b/dir.c
index 69e0be6aa28d6e9bcfa3baf4f80de5bcc3158fe0..a4a9d9fae154849fe38b153af9b16e00ef401f60 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -53,8 +53,6 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
        int check_only, const struct path_simplify *simplify);
 static int get_dtype(struct dirent *de, const char *path, int len);
 
-static struct trace_key trace_exclude = TRACE_KEY_INIT(EXCLUDE);
-
 /* helper string functions with support for the ignore_case flag */
 int strcmp_icase(const char *a, const char *b)
 {
@@ -516,7 +514,6 @@ void add_exclude(const char *string, const char *base,
        x->baselen = baselen;
        x->flags = flags;
        x->srcpos = srcpos;
-       string_list_init(&x->sticky_paths, 1);
        ALLOC_GROW(el->excludes, el->nr + 1, el->alloc);
        el->excludes[el->nr++] = x;
        x->el = el;
@@ -557,10 +554,8 @@ void clear_exclude_list(struct exclude_list *el)
 {
        int i;
 
-       for (i = 0; i < el->nr; i++) {
-               string_list_clear(&el->excludes[i]->sticky_paths, 0);
+       for (i = 0; i < el->nr; i++)
                free(el->excludes[i]);
-       }
        free(el->excludes);
        free(el->filebuf);
 
@@ -875,7 +870,7 @@ int match_pathname(const char *pathname, int pathlen,
                 * then our prefix match is all we need; we
                 * do not need to call fnmatch at all.
                 */
-               if (!patternlen && (!namelen || *name == '/'))
+               if (!patternlen && !namelen)
                        return 1;
        }
 
@@ -884,113 +879,6 @@ int match_pathname(const char *pathname, int pathlen,
                                 WM_PATHNAME) == 0;
 }
 
-static void add_sticky(struct exclude *exc, const char *pathname, int pathlen)
-{
-       struct strbuf sb = STRBUF_INIT;
-       int i;
-
-       for (i = exc->sticky_paths.nr - 1; i >= 0; i--) {
-               const char *sticky = exc->sticky_paths.items[i].string;
-               int len = strlen(sticky);
-
-               if (pathlen < len && sticky[pathlen] == '/' &&
-                   !strncmp(pathname, sticky, pathlen))
-                       return;
-       }
-
-       strbuf_add(&sb, pathname, pathlen);
-       string_list_append_nodup(&exc->sticky_paths, strbuf_detach(&sb, NULL));
-}
-
-static int match_sticky(struct exclude *exc, const char *pathname, int pathlen, int dtype)
-{
-       int i;
-
-       for (i = exc->sticky_paths.nr - 1; i >= 0; i--) {
-               const char *sticky = exc->sticky_paths.items[i].string;
-               int len = strlen(sticky);
-
-               if (pathlen == len && dtype == DT_DIR &&
-                   !strncmp(pathname, sticky, len))
-                       return 1;
-
-               if (pathlen > len && pathname[len] == '/' &&
-                   !strncmp(pathname, sticky, len))
-                       return 1;
-       }
-
-       return 0;
-}
-
-static inline int different_decisions(const struct exclude *a,
-                                     const struct exclude *b)
-{
-       return (a->flags & EXC_FLAG_NEGATIVE) != (b->flags & EXC_FLAG_NEGATIVE);
-}
-
-/*
- * Return non-zero if pathname is a directory and an ancestor of the
- * literal path in a pattern.
- */
-static int match_directory_part(const char *pathname, int pathlen,
-                               int *dtype, struct exclude *x)
-{
-       const char      *base       = x->base;
-       int              baselen    = x->baselen ? x->baselen - 1 : 0;
-       const char      *pattern    = x->pattern;
-       int              prefix     = x->nowildcardlen;
-       int              patternlen = x->patternlen;
-
-       if (*dtype == DT_UNKNOWN)
-               *dtype = get_dtype(NULL, pathname, pathlen);
-       if (*dtype != DT_DIR)
-               return 0;
-
-       if (*pattern == '/') {
-               pattern++;
-               patternlen--;
-               prefix--;
-       }
-
-       if (baselen) {
-               if (((pathlen < baselen && base[pathlen] == '/') ||
-                    pathlen == baselen) &&
-                   !strncmp_icase(pathname, base, pathlen))
-                       return 1;
-               pathname += baselen + 1;
-               pathlen  -= baselen + 1;
-       }
-
-
-       if (prefix &&
-           (((pathlen < prefix && pattern[pathlen] == '/') ||
-             pathlen == prefix) &&
-            !strncmp_icase(pathname, pattern, pathlen)))
-               return 1;
-
-       return 0;
-}
-
-static struct exclude *should_descend(const char *pathname, int pathlen,
-                                     int *dtype, struct exclude_list *el,
-                                     struct exclude *exc)
-{
-       int i;
-
-       for (i = el->nr - 1; 0 <= i; i--) {
-               struct exclude *x = el->excludes[i];
-
-               if (x == exc)
-                       break;
-
-               if (!(x->flags & EXC_FLAG_NODIR) &&
-                   different_decisions(x, exc) &&
-                   match_directory_part(pathname, pathlen, dtype, x))
-                       return x;
-       }
-       return NULL;
-}
-
 /*
  * Scan the given exclude list in reverse to see whether pathname
  * should be ignored.  The first match (i.e. the last on the list), if
@@ -1004,32 +892,16 @@ static struct exclude *last_exclude_matching_from_list(const char *pathname,
                                                       struct exclude_list *el)
 {
        struct exclude *exc = NULL; /* undecided */
-       int i, maybe_descend = 0;
+       int i;
 
        if (!el->nr)
                return NULL;    /* undefined */
 
-       trace_printf_key(&trace_exclude, "exclude: from %s\n", el->src);
-
        for (i = el->nr - 1; 0 <= i; i--) {
                struct exclude *x = el->excludes[i];
                const char *exclude = x->pattern;
                int prefix = x->nowildcardlen;
 
-               if (!maybe_descend && i < el->nr - 1 &&
-                   different_decisions(x, el->excludes[i+1]))
-                       maybe_descend = 1;
-
-               if (x->sticky_paths.nr) {
-                       if (*dtype == DT_UNKNOWN)
-                               *dtype = get_dtype(NULL, pathname, pathlen);
-                       if (match_sticky(x, pathname, pathlen, *dtype)) {
-                               exc = x;
-                               break;
-                       }
-                       continue;
-               }
-
                if (x->flags & EXC_FLAG_MUSTBEDIR) {
                        if (*dtype == DT_UNKNOWN)
                                *dtype = get_dtype(NULL, pathname, pathlen);
@@ -1056,45 +928,6 @@ static struct exclude *last_exclude_matching_from_list(const char *pathname,
                        break;
                }
        }
-
-       if (!exc) {
-               trace_printf_key(&trace_exclude, "exclude: %.*s => n/a\n",
-                                pathlen, pathname);
-               return NULL;
-       }
-
-       /*
-        * We have found a matching pattern "exc" that may exclude whole
-        * directory. We also found that there may be a pattern that matches
-        * something inside the directory and reincludes stuff.
-        *
-        * Go through the patterns again, find that pattern and double check.
-        * If it's true, return "undecided" and keep descending in. "exc" is
-        * marked sticky so that it continues to match inside the directory.
-        */
-       if (!(exc->flags & EXC_FLAG_NEGATIVE) && maybe_descend) {
-               struct exclude *x;
-
-               if (*dtype == DT_UNKNOWN)
-                       *dtype = get_dtype(NULL, pathname, pathlen);
-
-               if (*dtype == DT_DIR &&
-                   (x = should_descend(pathname, pathlen, dtype, el, exc))) {
-                       add_sticky(exc, pathname, pathlen);
-                       trace_printf_key(&trace_exclude,
-                                        "exclude: %.*s vs %s at line %d => %s,"
-                                        " forced open by %s at line %d => n/a\n",
-                                        pathlen, pathname, exc->pattern, exc->srcpos,
-                                        exc->flags & EXC_FLAG_NEGATIVE ? "no" : "yes",
-                                        x->pattern, x->srcpos);
-                       return NULL;
-               }
-       }
-
-       trace_printf_key(&trace_exclude, "exclude: %.*s vs %s at line %d => %s%s\n",
-                        pathlen, pathname, exc->pattern, exc->srcpos,
-                        exc->flags & EXC_FLAG_NEGATIVE ? "no" : "yes",
-                        exc->sticky_paths.nr ? " (stuck)" : "");
        return exc;
 }
 
@@ -1840,13 +1673,9 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
        struct cached_dir cdir;
        enum path_treatment state, subdir_state, dir_state = path_none;
        struct strbuf path = STRBUF_INIT;
-       static int level = 0;
 
        strbuf_add(&path, base, baselen);
 
-       trace_printf_key(&trace_exclude, "exclude: [%d] enter '%.*s'\n",
-                        level++, baselen, base);
-
        if (open_cached_dir(&cdir, dir, untracked, &path, check_only))
                goto out;
 
@@ -1910,8 +1739,6 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
        }
        close_cached_dir(&cdir);
  out:
-       trace_printf_key(&trace_exclude, "exclude: [%d] leave '%.*s'\n",
-                        --level, baselen, base);
        strbuf_release(&path);
 
        return dir_state;
@@ -2148,25 +1975,6 @@ static struct untracked_cache_dir *validate_untracked_cache(struct dir_struct *d
        return root;
 }
 
-static void clear_sticky(struct dir_struct *dir)
-{
-       struct exclude_list_group *g;
-       struct exclude_list *el;
-       struct exclude *x;
-       int i, j, k;
-
-       for (i = EXC_CMDL; i <= EXC_FILE; i++) {
-               g = &dir->exclude_list_group[i];
-               for (j = g->nr - 1; j >= 0; j--) {
-                       el = &g->el[j];
-                       for (k = el->nr - 1; 0 <= k; k--) {
-                               x = el->excludes[k];
-                               string_list_clear(&x->sticky_paths, 0);
-                       }
-               }
-       }
-}
-
 int read_directory(struct dir_struct *dir, const char *path, int len, const struct pathspec *pathspec)
 {
        struct path_simplify *simplify;
@@ -2187,12 +1995,6 @@ int read_directory(struct dir_struct *dir, const char *path, int len, const stru
        if (has_symlink_leading_path(path, len))
                return dir->nr;
 
-       /*
-        * Stay on the safe side. if read_directory() has run once on
-        * "dir", some sticky flag may have been left. Clear them all.
-        */
-       clear_sticky(dir);
-
        /*
         * exclude patterns are treated like positive ones in
         * create_simplify. Usually exclude patterns should be a
diff --git a/dir.h b/dir.h
index 3ec3fb0dca22164134ea0700094bf63bdc6ad329..cd46f30017ce239720926afdad4301b2ac402ccf 100644 (file)
--- a/dir.h
+++ b/dir.h
@@ -4,7 +4,6 @@
 /* See Documentation/technical/api-directory-listing.txt */
 
 #include "strbuf.h"
-#include "string-list.h"
 
 struct dir_entry {
        unsigned int len;
@@ -35,8 +34,6 @@ struct exclude {
         * and from -1 decrementing for patterns from CLI args.
         */
        int srcpos;
-
-       struct string_list sticky_paths;
 };
 
 /*
index c0cfe88a3d9422e0255c29dc7ccb4566412013cd..4cde685b43a4463bac5f96bcb4f8ed8b3e9347be 100644 (file)
@@ -1233,7 +1233,8 @@ then
        git rev-list $revisions |
        while read rev
        do
-               if test -f "$rewritten"/$rev && test "$(sane_grep "$rev" "$state_dir"/not-cherry-picks)" = ""
+               if test -f "$rewritten"/$rev &&
+                  ! sane_grep "$rev" "$state_dir"/not-cherry-picks >/dev/null
                then
                        # Use -f2 because if rev-list is telling us this commit is
                        # not worthwhile, we don't want to track its multiple heads,
index 4691fbcb64fe7ecbc58930bb96d4e6b28e2b87a7..c48139a49420ea2318e23d8667eb20bae9772463 100644 (file)
@@ -168,11 +168,11 @@ git_pager() {
 }
 
 sane_grep () {
-       GREP_OPTIONS= LC_ALL=C grep "$@"
+       GREP_OPTIONS= LC_ALL=C grep @@SANE_TEXT_GREP@@ "$@"
 }
 
 sane_egrep () {
-       GREP_OPTIONS= LC_ALL=C egrep "$@"
+       GREP_OPTIONS= LC_ALL=C egrep @@SANE_TEXT_GREP@@ "$@"
 }
 
 is_bare_repository () {
index fa5f253065307499642cae63d93cdd5b5e16db0a..05eced06cde8a1ff83262d452dc8edbcc1f3dea8 100755 (executable)
@@ -1745,11 +1745,12 @@ sub post_fetch_checkout {
 
 sub complete_svn_url {
        my ($url, $path) = @_;
-       $path = canonicalize_path($path);
 
-       # If the path is not a URL...
-       if ($path !~ m#^[a-z\+]+://#) {
-               if (!defined $url || $url !~ m#^[a-z\+]+://#) {
+       if ($path =~ m#^[a-z\+]+://#i) { # path is a URL
+               $path = canonicalize_url($path);
+       } else {
+               $path = canonicalize_path($path);
+               if (!defined $url || $url !~ m#^[a-z\+]+://#i) {
                        fatal("E: '$path' is not a complete URL ",
                              "and a separate URL is not specified");
                }
@@ -1764,11 +1765,12 @@ sub complete_url_ls_init {
                print STDERR "W: $switch not specified\n";
                return;
        }
-       $repo_path = canonicalize_path($repo_path);
-       if ($repo_path =~ m#^[a-z\+]+://#) {
+       if ($repo_path =~ m#^[a-z\+]+://#i) {
+               $repo_path = canonicalize_url($repo_path);
                $ra = Git::SVN::Ra->new($repo_path);
                $repo_path = '';
        } else {
+               $repo_path = canonicalize_path($repo_path);
                $repo_path =~ s#^/+##;
                unless ($ra) {
                        fatal("E: '$repo_path' is not a complete URL ",
index 5f1255c860486571ef1159695318c74c73f8c340..805a1c703040d4b08fc0d6992c92e2a044c5ddc5 100755 (executable)
@@ -3021,7 +3021,7 @@ proc bindall {event action} {
 }
 
 proc about {} {
-    global uifont NS
+    global bgcolor NS
     set w .about
     if {[winfo exists $w]} {
        raise $w
@@ -3036,7 +3036,7 @@ Gitk - a commit viewer for git
 Copyright \u00a9 2005-2014 Paul Mackerras
 
 Use and redistribute under the terms of the GNU General Public License"] \
-           -justify center -aspect 400 -border 2 -bg white -relief groove
+           -justify center -aspect 400 -border 2 -bg $bgcolor -relief groove
     pack $w.m -side top -fill x -padx 2 -pady 2
     ${NS}::button $w.ok -text [mc "Close"] -command "destroy $w" -default active
     pack $w.ok -side bottom
@@ -3047,7 +3047,7 @@ Use and redistribute under the terms of the GNU General Public License"] \
 }
 
 proc keys {} {
-    global NS
+    global bgcolor NS
     set w .keys
     if {[winfo exists $w]} {
        raise $w
@@ -3103,7 +3103,7 @@ proc keys {} {
 [mc "<%s-minus>        Decrease font size" $M1T]
 [mc "<F5>              Update"]
 " \
-           -justify left -bg white -border 2 -relief groove
+           -justify left -bg $bgcolor -border 2 -relief groove
     pack $w.m -side top -fill both -padx 2 -pady 2
     ${NS}::button $w.ok -text [mc "Close"] -command "destroy $w" -default active
     bind $w <Key-Escape> [list destroy $w]
index 909a56463fe6ddb35427301624ba648950070787..99aa77aa63bd24af12a2ccee120b2a1db7307781 100644 (file)
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gitk master\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-06-27 20:44+0300\n"
-"PO-Revision-Date: 2015-06-27 20:46+0300\n"
+"POT-Creation-Date: 2015-12-19 11:48+0200\n"
+"PO-Revision-Date: 2015-12-19 11:49+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
 "Language: bg\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Couldn't get list of unmerged files:"
 msgstr "Списъкът с неслети файлове не може да бъде получен:"
 
-#: gitk:212 gitk:2381
+#: gitk:212 gitk:2399
 msgid "Color words"
 msgstr "Оцветяване на думите"
 
-#: gitk:217 gitk:2381 gitk:8220 gitk:8253
+#: gitk:217 gitk:2399 gitk:8239 gitk:8272
 msgid "Markup words"
 msgstr "Отбелязване на думите"
 
@@ -59,15 +59,15 @@ msgstr "Грешка при изпълнение на „git log“:"
 msgid "Reading"
 msgstr "Прочитане"
 
-#: gitk:496 gitk:4525
+#: gitk:496 gitk:4544
 msgid "Reading commits..."
 msgstr "Прочитане на подаванията…"
 
-#: gitk:499 gitk:1637 gitk:4528
+#: gitk:499 gitk:1637 gitk:4547
 msgid "No commits selected"
 msgstr "Не са избрани подавания"
 
-#: gitk:1445 gitk:4045 gitk:12432
+#: gitk:1445 gitk:4064 gitk:12469
 msgid "Command line"
 msgstr "Команден ред"
 
@@ -79,286 +79,294 @@ msgstr "Изходът от „git log“ не може да се анализи
 msgid "No commit information available"
 msgstr "Липсва информация за подавания"
 
-#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521
+#: gitk:1903 gitk:1932 gitk:4334 gitk:9702 gitk:11274 gitk:11554
 msgid "OK"
 msgstr "Добре"
 
-#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671
-#: gitk:11242 gitk:11522
+#: gitk:1934 gitk:4336 gitk:9215 gitk:9294 gitk:9424 gitk:9473 gitk:9704
+#: gitk:11275 gitk:11555
 msgid "Cancel"
 msgstr "Отказ"
 
-#: gitk:2069
+#: gitk:2083
 msgid "&Update"
-msgstr "Обновяване"
+msgstr "&Обновяване"
 
-#: gitk:2070
+#: gitk:2084
 msgid "&Reload"
-msgstr "Презареждане"
+msgstr "&Презареждане"
 
-#: gitk:2071
+#: gitk:2085
 msgid "Reread re&ferences"
-msgstr "Наново прочитане на настройките"
+msgstr "&Наново прочитане на настройките"
 
-#: gitk:2072
+#: gitk:2086
 msgid "&List references"
-msgstr "Изброяване на указателите"
+msgstr "&Изброяване на указателите"
 
-#: gitk:2074
+#: gitk:2088
 msgid "Start git &gui"
-msgstr "Стартиране на „git gui“"
+msgstr "&Стартиране на „git gui“"
 
-#: gitk:2076
+#: gitk:2090
 msgid "&Quit"
-msgstr "Спиране на програмата"
+msgstr "&Спиране на програмата"
 
-#: gitk:2068
+#: gitk:2082
 msgid "&File"
-msgstr "Файл"
+msgstr "&Файл"
 
-#: gitk:2080
+#: gitk:2094
 msgid "&Preferences"
-msgstr "Настройки"
+msgstr "&Настройки"
 
-#: gitk:2079
+#: gitk:2093
 msgid "&Edit"
-msgstr "Редактиране"
+msgstr "&Редактиране"
 
-#: gitk:2084
+#: gitk:2098
 msgid "&New view..."
-msgstr "Нов изглед…"
+msgstr "&Нов изглед…"
 
-#: gitk:2085
+#: gitk:2099
 msgid "&Edit view..."
-msgstr "Редактиране на изгледа…"
+msgstr "&Редактиране на изгледа…"
 
-#: gitk:2086
+#: gitk:2100
 msgid "&Delete view"
-msgstr "Изтриване на изгледа"
+msgstr "&Изтриване на изгледа"
 
-#: gitk:2088 gitk:4043
+#: gitk:2102
 msgid "&All files"
-msgstr "Всички файлове"
+msgstr "&Всички файлове"
 
-#: gitk:2083 gitk:4067
+#: gitk:2097
 msgid "&View"
-msgstr "Изглед"
+msgstr "&Изглед"
 
-#: gitk:2093 gitk:2103 gitk:3012
+#: gitk:2107 gitk:2117
 msgid "&About gitk"
-msgstr "Относно gitk"
+msgstr "&Относно gitk"
 
-#: gitk:2094 gitk:2108
+#: gitk:2108 gitk:2122
 msgid "&Key bindings"
-msgstr "Клавишни комбинации"
+msgstr "&Клавишни комбинации"
 
-#: gitk:2092 gitk:2107
+#: gitk:2106 gitk:2121
 msgid "&Help"
-msgstr "Помощ"
+msgstr "Помо&щ"
 
-#: gitk:2185 gitk:8652
+#: gitk:2199 gitk:8671
 msgid "SHA1 ID:"
 msgstr "SHA1:"
 
-#: gitk:2229
+#: gitk:2243
 msgid "Row"
 msgstr "Ред"
 
-#: gitk:2267
+#: gitk:2281
 msgid "Find"
 msgstr "Търсене"
 
-#: gitk:2295
+#: gitk:2309
 msgid "commit"
 msgstr "подаване"
 
-#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827
-#: gitk:6912
+#: gitk:2313 gitk:2315 gitk:4706 gitk:4729 gitk:4753 gitk:6774 gitk:6846
+#: gitk:6931
 msgid "containing:"
 msgstr "съдържащо:"
 
-#: gitk:2302 gitk:3526 gitk:3531 gitk:4763
+#: gitk:2316 gitk:3545 gitk:3550 gitk:4782
 msgid "touching paths:"
 msgstr "засягащо пътищата:"
 
-#: gitk:2303 gitk:4777
+#: gitk:2317 gitk:4796
 msgid "adding/removing string:"
 msgstr "добавящо/премахващо низ"
 
-#: gitk:2304 gitk:4779
+#: gitk:2318 gitk:4798
 msgid "changing lines matching:"
 msgstr "променящо редове напасващи:"
 
-#: gitk:2313 gitk:2315 gitk:4766
+#: gitk:2327 gitk:2329 gitk:4785
 msgid "Exact"
 msgstr "Точно"
 
-#: gitk:2315 gitk:4854 gitk:6723
+#: gitk:2329 gitk:4873 gitk:6742
 msgid "IgnCase"
 msgstr "Без регистър"
 
-#: gitk:2315 gitk:4736 gitk:4852 gitk:6719
+#: gitk:2329 gitk:4755 gitk:4871 gitk:6738
 msgid "Regexp"
 msgstr "Рег. израз"
 
-#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916
+#: gitk:2331 gitk:2332 gitk:4893 gitk:4923 gitk:4930 gitk:6867 gitk:6935
 msgid "All fields"
 msgstr "Всички полета"
 
-#: gitk:2318 gitk:4871 gitk:4904 gitk:6786
+#: gitk:2332 gitk:4890 gitk:4923 gitk:6805
 msgid "Headline"
 msgstr "Първи ред"
 
-#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389
+#: gitk:2333 gitk:4890 gitk:6805 gitk:6935 gitk:7408
 msgid "Comments"
 msgstr "Коментари"
 
-#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830
-#: gitk:8845
+#: gitk:2333 gitk:4890 gitk:4895 gitk:4930 gitk:6805 gitk:7343 gitk:8849
+#: gitk:8864
 msgid "Author"
 msgstr "Автор"
 
-#: gitk:2319 gitk:4871 gitk:6786 gitk:7326
+#: gitk:2333 gitk:4890 gitk:6805 gitk:7345
 msgid "Committer"
 msgstr "Подаващ"
 
-#: gitk:2350
+#: gitk:2367
 msgid "Search"
 msgstr "Търсене"
 
-#: gitk:2358
+#: gitk:2375
 msgid "Diff"
 msgstr "Разлики"
 
-#: gitk:2360
+#: gitk:2377
 msgid "Old version"
 msgstr "Стара версия"
 
-#: gitk:2362
+#: gitk:2379
 msgid "New version"
 msgstr "Нова версия"
 
-#: gitk:2364
+#: gitk:2382
 msgid "Lines of context"
 msgstr "Контекст в редове"
 
-#: gitk:2374
+#: gitk:2392
 msgid "Ignore space change"
 msgstr "Празните знаци без значение"
 
-#: gitk:2378 gitk:2380 gitk:7959 gitk:8206
+#: gitk:2396 gitk:2398 gitk:7978 gitk:8225
 msgid "Line diff"
 msgstr "Поредови разлики"
 
-#: gitk:2445
+#: gitk:2463
 msgid "Patch"
 msgstr "Кръпка"
 
-#: gitk:2447
+#: gitk:2465
 msgid "Tree"
 msgstr "Дърво"
 
-#: gitk:2617 gitk:2637
+#: gitk:2635 gitk:2656
 msgid "Diff this -> selected"
 msgstr "Разлики между това и избраното"
 
-#: gitk:2618 gitk:2638
+#: gitk:2636 gitk:2657
 msgid "Diff selected -> this"
 msgstr "Разлики между избраното и това"
 
-#: gitk:2619 gitk:2639
+#: gitk:2637 gitk:2658
 msgid "Make patch"
 msgstr "Създаване на кръпка"
 
-#: gitk:2620 gitk:9254
+#: gitk:2638 gitk:9273
 msgid "Create tag"
 msgstr "Създаване на етикет"
 
-#: gitk:2621 gitk:9371
+#: gitk:2639
+msgid "Copy commit summary"
+msgstr "Копиране на информацията за подаване"
+
+#: gitk:2640 gitk:9404
 msgid "Write commit to file"
 msgstr "Запазване на подаването във файл"
 
-#: gitk:2622 gitk:9428
+#: gitk:2641 gitk:9461
 msgid "Create new branch"
 msgstr "Създаване на нов клон"
 
-#: gitk:2623
+#: gitk:2642
 msgid "Cherry-pick this commit"
 msgstr "Отбиране на това подаване"
 
-#: gitk:2624
+#: gitk:2643
 msgid "Reset HEAD branch to here"
 msgstr "Привеждане на върха на клона към текущото подаване"
 
-#: gitk:2625
+#: gitk:2644
 msgid "Mark this commit"
 msgstr "Отбелязване на това подаване"
 
-#: gitk:2626
+#: gitk:2645
 msgid "Return to mark"
 msgstr "Връщане към отбелязаното подаване"
 
-#: gitk:2627
+#: gitk:2646
 msgid "Find descendant of this and mark"
 msgstr "Откриване и отбелязване на наследниците"
 
-#: gitk:2628
+#: gitk:2647
 msgid "Compare with marked commit"
 msgstr "Сравнение с отбелязаното подаване"
 
-#: gitk:2629 gitk:2640
+#: gitk:2648 gitk:2659
 msgid "Diff this -> marked commit"
 msgstr "Разлики между това и отбелязаното"
 
-#: gitk:2630 gitk:2641
+#: gitk:2649 gitk:2660
 msgid "Diff marked commit -> this"
 msgstr "Разлики между отбелязаното и това"
 
-#: gitk:2631
+#: gitk:2650
 msgid "Revert this commit"
 msgstr "Отмяна на това подаване"
 
-#: gitk:2647
+#: gitk:2666
 msgid "Check out this branch"
 msgstr "Изтегляне на този клон"
 
-#: gitk:2648
+#: gitk:2667
 msgid "Remove this branch"
 msgstr "Изтриване на този клон"
 
-#: gitk:2649
+#: gitk:2668
 msgid "Copy branch name"
 msgstr "Копиране на името на клона"
 
-#: gitk:2656
+#: gitk:2675
 msgid "Highlight this too"
 msgstr "Отбелязване и на това"
 
-#: gitk:2657
+#: gitk:2676
 msgid "Highlight this only"
 msgstr "Отбелязване само на това"
 
-#: gitk:2658
+#: gitk:2677
 msgid "External diff"
 msgstr "Външна програма за разлики"
 
-#: gitk:2659
+#: gitk:2678
 msgid "Blame parent commit"
 msgstr "Анотиране на родителското подаване"
 
-#: gitk:2660
+#: gitk:2679
 msgid "Copy path"
 msgstr "Копиране на пътя"
 
-#: gitk:2667
+#: gitk:2686
 msgid "Show origin of this line"
 msgstr "Показване на произхода на този ред"
 
-#: gitk:2668
+#: gitk:2687
 msgid "Run git gui blame on this line"
 msgstr "Изпълнение на „git gui blame“ върху този ред"
 
-#: gitk:3014
+#: gitk:3031
+msgid "About gitk"
+msgstr "Относно gitk"
+
+#: gitk:3033
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
@@ -374,316 +382,324 @@ msgstr ""
 "\n"
 "Използвайте и разпространявайте при условията на ОПЛ на ГНУ"
 
-#: gitk:3022 gitk:3089 gitk:9857
+#: gitk:3041 gitk:3108 gitk:9890
 msgid "Close"
 msgstr "Затваряне"
 
-#: gitk:3043
+#: gitk:3062
 msgid "Gitk key bindings"
 msgstr "Клавишни комбинации"
 
-#: gitk:3046
+#: gitk:3065
 msgid "Gitk key bindings:"
 msgstr "Клавишни комбинации:"
 
-#: gitk:3048
+#: gitk:3067
 #, tcl-format
 msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tСпиране на програмата"
 
-#: gitk:3049
+#: gitk:3068
 #, tcl-format
 msgid "<%s-W>\t\tClose window"
 msgstr "<%s-W>\t\tЗатваряне на прозореца"
 
-#: gitk:3050
+#: gitk:3069
 msgid "<Home>\t\tMove to first commit"
 msgstr "<Home>\t\tКъм първото подаване"
 
-#: gitk:3051
+#: gitk:3070
 msgid "<End>\t\tMove to last commit"
 msgstr "<End>\t\tКъм последното подаване"
 
-#: gitk:3052
+#: gitk:3071
 msgid "<Up>, p, k\tMove up one commit"
 msgstr "<Up>, p, k\tЕдно подаване нагоре"
 
-#: gitk:3053
+#: gitk:3072
 msgid "<Down>, n, j\tMove down one commit"
 msgstr "<Down>, n, j\tЕдно подаване надолу"
 
-#: gitk:3054
+#: gitk:3073
 msgid "<Left>, z, h\tGo back in history list"
 msgstr "<Left>, z, h\tНазад в историята"
 
-#: gitk:3055
+#: gitk:3074
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Right>, x, l\tНапред в историята"
 
-#: gitk:3056
+#: gitk:3075
 #, tcl-format
 msgid "<%s-n>\tGo to n-th parent of current commit in history list"
 msgstr "<%s-n>\tКъм n-тия родител на текущото подаване в историята"
 
-#: gitk:3057
+#: gitk:3076
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<PageUp>\tСтраница нагоре в списъка с подаванията"
 
-#: gitk:3058
+#: gitk:3077
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<PageDown>\tСтраница надолу в списъка с подаванията"
 
-#: gitk:3059
+#: gitk:3078
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
 msgstr "<%s-Home>\tКъм началото на списъка с подаванията"
 
-#: gitk:3060
+#: gitk:3079
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
 msgstr "<%s-End>\tКъм края на списъка с подаванията"
 
-#: gitk:3061
+#: gitk:3080
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
 msgstr "<%s-Up>\tРед нагоре в списъка с подавания"
 
-#: gitk:3062
+#: gitk:3081
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
 msgstr "<%s-Down>\tРед надолу в списъка с подавания"
 
-#: gitk:3063
+#: gitk:3082
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
 msgstr "<%s-PageUp>\tСтраница нагоре в списъка с подавания"
 
-#: gitk:3064
+#: gitk:3083
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
 msgstr "<%s-PageDown>\tСтраница надолу в списъка с подавания"
 
-#: gitk:3065
+#: gitk:3084
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr "<Shift-Up>\tТърсене назад (визуално нагоре, исторически — последващи)"
 
-#: gitk:3066
+#: gitk:3085
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr ""
 "<Shift-Down>\tТърсене напред (визуално надолу, исторически — предхождащи)"
 
-#: gitk:3067
+#: gitk:3086
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Delete>, b\tСтраница нагоре в изгледа за разлики"
 
-#: gitk:3068
+#: gitk:3087
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Backspace>\tСтраница надолу в изгледа за разлики"
 
-#: gitk:3069
+#: gitk:3088
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Space>\t\tСтраница надолу в изгледа за разлики"
 
-#: gitk:3070
+#: gitk:3089
 msgid "u\t\tScroll diff view up 18 lines"
 msgstr "u\t\t18 реда нагоре в изгледа за разлики"
 
-#: gitk:3071
+#: gitk:3090
 msgid "d\t\tScroll diff view down 18 lines"
 msgstr "d\t\t18 реда надолу в изгледа за разлики"
 
-#: gitk:3072
+#: gitk:3091
 #, tcl-format
 msgid "<%s-F>\t\tFind"
 msgstr "<%s-F>\t\tТърсене"
 
-#: gitk:3073
+#: gitk:3092
 #, tcl-format
 msgid "<%s-G>\t\tMove to next find hit"
 msgstr "<%s-G>\t\tКъм следващата поява"
 
-#: gitk:3074
+#: gitk:3093
 msgid "<Return>\tMove to next find hit"
 msgstr "<Return>\tКъм следващата поява"
 
-#: gitk:3075
+#: gitk:3094
 msgid "g\t\tGo to commit"
 msgstr "g\t\tКъм последното подаване"
 
-#: gitk:3076
+#: gitk:3095
 msgid "/\t\tFocus the search box"
 msgstr "/\t\tФокус върху полето за търсене"
 
-#: gitk:3077
+#: gitk:3096
 msgid "?\t\tMove to previous find hit"
 msgstr "?\t\tКъм предишната поява"
 
-#: gitk:3078
+#: gitk:3097
 msgid "f\t\tScroll diff view to next file"
 msgstr "f\t\tСледващ файл в изгледа за разлики"
 
-#: gitk:3079
+#: gitk:3098
 #, tcl-format
 msgid "<%s-S>\t\tSearch for next hit in diff view"
 msgstr "<%s-S>\t\tТърсене на следващата поява в изгледа за разлики"
 
-#: gitk:3080
+#: gitk:3099
 #, tcl-format
 msgid "<%s-R>\t\tSearch for previous hit in diff view"
 msgstr "<%s-R>\t\tТърсене на предишната поява в изгледа за разлики"
 
-#: gitk:3081
+#: gitk:3100
 #, tcl-format
 msgid "<%s-KP+>\tIncrease font size"
 msgstr "<%s-KP+>\tПо-голям размер на шрифта"
 
-#: gitk:3082
+#: gitk:3101
 #, tcl-format
 msgid "<%s-plus>\tIncrease font size"
 msgstr "<%s-plus>\tПо-голям размер на шрифта"
 
-#: gitk:3083
+#: gitk:3102
 #, tcl-format
 msgid "<%s-KP->\tDecrease font size"
 msgstr "<%s-KP->\tПо-малък размер на шрифта"
 
-#: gitk:3084
+#: gitk:3103
 #, tcl-format
 msgid "<%s-minus>\tDecrease font size"
 msgstr "<%s-minus>\tПо-малък размер на шрифта"
 
-#: gitk:3085
+#: gitk:3104
 msgid "<F5>\t\tUpdate"
 msgstr "<F5>\t\tОбновяване"
 
-#: gitk:3550 gitk:3559
+#: gitk:3569 gitk:3578
 #, tcl-format
 msgid "Error creating temporary directory %s:"
 msgstr "Грешка при създаването на временната директория „%s“:"
 
-#: gitk:3572
+#: gitk:3591
 #, tcl-format
 msgid "Error getting \"%s\" from %s:"
 msgstr "Грешка при получаването на „%s“ от %s:"
 
-#: gitk:3635
+#: gitk:3654
 msgid "command failed:"
 msgstr "неуспешно изпълнение на команда:"
 
-#: gitk:3784
+#: gitk:3803
 msgid "No such commit"
 msgstr "Такова подаване няма"
 
-#: gitk:3798
+#: gitk:3817
 msgid "git gui blame: command failed:"
 msgstr "„git gui blame“: неуспешно изпълнение на команда:"
 
-#: gitk:3829
+#: gitk:3848
 #, tcl-format
 msgid "Couldn't read merge head: %s"
 msgstr "Върхът за сливане не може да бъде прочетен: %s"
 
-#: gitk:3837
+#: gitk:3856
 #, tcl-format
 msgid "Error reading index: %s"
 msgstr "Грешка при прочитане на индекса: %s"
 
-#: gitk:3862
+#: gitk:3881
 #, tcl-format
 msgid "Couldn't start git blame: %s"
 msgstr "Командата „git blame“ не може да бъде стартирана: %s"
 
-#: gitk:3865 gitk:6754
+#: gitk:3884 gitk:6773
 msgid "Searching"
 msgstr "Търсене"
 
-#: gitk:3897
+#: gitk:3916
 #, tcl-format
 msgid "Error running git blame: %s"
 msgstr "Грешка при изпълнението на „git blame“: %s"
 
-#: gitk:3925
+#: gitk:3944
 #, tcl-format
 msgid "That line comes from commit %s,  which is not in this view"
 msgstr "Този ред идва от подаването %s, което не е в изгледа"
 
-#: gitk:3939
+#: gitk:3958
 msgid "External diff viewer failed:"
 msgstr "Неуспешно изпълнение на външната програма за разлики:"
 
-#: gitk:4070
+#: gitk:4062
+msgid "All files"
+msgstr "Всички файлове"
+
+#: gitk:4086
+msgid "View"
+msgstr "Изглед"
+
+#: gitk:4089
 msgid "Gitk view definition"
 msgstr "Дефиниция на изглед в Gitk"
 
-#: gitk:4074
+#: gitk:4093
 msgid "Remember this view"
 msgstr "Запазване на този изглед"
 
-#: gitk:4075
+#: gitk:4094
 msgid "References (space separated list):"
 msgstr "Указатели (списък с разделител интервал):"
 
-#: gitk:4076
+#: gitk:4095
 msgid "Branches & tags:"
 msgstr "Клони и етикети:"
 
-#: gitk:4077
+#: gitk:4096
 msgid "All refs"
 msgstr "Всички указатели"
 
-#: gitk:4078
+#: gitk:4097
 msgid "All (local) branches"
 msgstr "Всички (локални) клони"
 
-#: gitk:4079
+#: gitk:4098
 msgid "All tags"
 msgstr "Всички етикети"
 
-#: gitk:4080
+#: gitk:4099
 msgid "All remote-tracking branches"
 msgstr "Всички следящи клони"
 
-#: gitk:4081
+#: gitk:4100
 msgid "Commit Info (regular expressions):"
 msgstr "Информация за подаване (рег. изр.):"
 
-#: gitk:4082
+#: gitk:4101
 msgid "Author:"
 msgstr "Автор:"
 
-#: gitk:4083
+#: gitk:4102
 msgid "Committer:"
 msgstr "Подал:"
 
-#: gitk:4084
+#: gitk:4103
 msgid "Commit Message:"
 msgstr "Съобщение при подаване:"
 
-#: gitk:4085
+#: gitk:4104
 msgid "Matches all Commit Info criteria"
 msgstr "Съвпадение по всички характеристики на подаването"
 
-#: gitk:4086
+#: gitk:4105
 msgid "Matches no Commit Info criteria"
 msgstr "Не съвпада по никоя от характеристиките на подаването"
 
-#: gitk:4087
+#: gitk:4106
 msgid "Changes to Files:"
 msgstr "Промени по файловете:"
 
-#: gitk:4088
+#: gitk:4107
 msgid "Fixed String"
 msgstr "Дословен низ"
 
-#: gitk:4089
+#: gitk:4108
 msgid "Regular Expression"
 msgstr "Регулярен израз"
 
-#: gitk:4090
+#: gitk:4109
 msgid "Search string:"
 msgstr "Низ за търсене:"
 
-#: gitk:4091
+#: gitk:4110
 msgid ""
 "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
 "15:27:38\"):"
@@ -691,204 +707,204 @@ msgstr ""
 "Дата на подаване („2 weeks ago“ (преди 2 седмици), „2009-03-17 15:27:38“, "
 "„March 17, 2009 15:27:38“):"
 
-#: gitk:4092
+#: gitk:4111
 msgid "Since:"
 msgstr "От:"
 
-#: gitk:4093
+#: gitk:4112
 msgid "Until:"
 msgstr "До:"
 
-#: gitk:4094
+#: gitk:4113
 msgid "Limit and/or skip a number of revisions (positive integer):"
 msgstr ""
 "Ограничаване и/или прескачане на определен брой версии (неотрицателно цяло "
 "число):"
 
-#: gitk:4095
+#: gitk:4114
 msgid "Number to show:"
 msgstr "Брой показани:"
 
-#: gitk:4096
+#: gitk:4115
 msgid "Number to skip:"
 msgstr "Брой прескочени:"
 
-#: gitk:4097
+#: gitk:4116
 msgid "Miscellaneous options:"
 msgstr "Разни:"
 
-#: gitk:4098
+#: gitk:4117
 msgid "Strictly sort by date"
 msgstr "Подреждане по дата"
 
-#: gitk:4099
+#: gitk:4118
 msgid "Mark branch sides"
 msgstr "Отбелязване на страните по клона"
 
-#: gitk:4100
+#: gitk:4119
 msgid "Limit to first parent"
 msgstr "Само първия родител"
 
-#: gitk:4101
+#: gitk:4120
 msgid "Simple history"
 msgstr "Опростена история"
 
-#: gitk:4102
+#: gitk:4121
 msgid "Additional arguments to git log:"
 msgstr "Допълнителни аргументи към „git log“:"
 
-#: gitk:4103
+#: gitk:4122
 msgid "Enter files and directories to include, one per line:"
 msgstr "Въведете файловете и директориите за включване, по елемент на ред"
 
-#: gitk:4104
+#: gitk:4123
 msgid "Command to generate more commits to include:"
 msgstr ""
 "Команда за генерирането на допълнителни подавания, които да бъдат включени:"
 
-#: gitk:4228
+#: gitk:4247
 msgid "Gitk: edit view"
 msgstr "Gitk: редактиране на изглед"
 
-#: gitk:4236
+#: gitk:4255
 msgid "-- criteria for selecting revisions"
 msgstr "— критерии за избор на версии"
 
-#: gitk:4241
+#: gitk:4260
 msgid "View Name"
 msgstr "Име на изглед"
 
-#: gitk:4316
+#: gitk:4335
 msgid "Apply (F5)"
 msgstr "Прилагане (F5)"
 
-#: gitk:4354
+#: gitk:4373
 msgid "Error in commit selection arguments:"
 msgstr "Грешка в аргументите за избор на подавания:"
 
-#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374
+#: gitk:4428 gitk:4481 gitk:4943 gitk:4957 gitk:6227 gitk:12410 gitk:12411
 msgid "None"
 msgstr "Няма"
 
-#: gitk:5021 gitk:5026
+#: gitk:5040 gitk:5045
 msgid "Descendant"
 msgstr "Наследник"
 
-#: gitk:5022
+#: gitk:5041
 msgid "Not descendant"
 msgstr "Не е наследник"
 
-#: gitk:5029 gitk:5034
+#: gitk:5048 gitk:5053
 msgid "Ancestor"
 msgstr "Предшественик"
 
-#: gitk:5030
+#: gitk:5049
 msgid "Not ancestor"
 msgstr "Не е предшественик"
 
-#: gitk:5324
+#: gitk:5343
 msgid "Local changes checked in to index but not committed"
 msgstr "Локални промени добавени към индекса, но неподадени"
 
-#: gitk:5360
+#: gitk:5379
 msgid "Local uncommitted changes, not checked in to index"
 msgstr "Локални промени извън индекса"
 
-#: gitk:7134
+#: gitk:7153
 msgid "and many more"
 msgstr "и още много"
 
-#: gitk:7137
+#: gitk:7156
 msgid "many"
 msgstr "много"
 
-#: gitk:7328
+#: gitk:7347
 msgid "Tags:"
 msgstr "Етикети:"
 
-#: gitk:7345 gitk:7351 gitk:8825
+#: gitk:7364 gitk:7370 gitk:8844
 msgid "Parent"
 msgstr "Родител"
 
-#: gitk:7356
+#: gitk:7375
 msgid "Child"
 msgstr "Дете"
 
-#: gitk:7365
+#: gitk:7384
 msgid "Branch"
 msgstr "Клон"
 
-#: gitk:7368
+#: gitk:7387
 msgid "Follows"
 msgstr "Следва"
 
-#: gitk:7371
+#: gitk:7390
 msgid "Precedes"
 msgstr "Предшества"
 
-#: gitk:7966
+#: gitk:7985
 #, tcl-format
 msgid "Error getting diffs: %s"
 msgstr "Грешка при получаването на разликите: %s"
 
-#: gitk:8650
+#: gitk:8669
 msgid "Goto:"
 msgstr "Към ред:"
 
-#: gitk:8671
+#: gitk:8690
 #, tcl-format
 msgid "Short SHA1 id %s is ambiguous"
 msgstr "Съкратената сума по SHA1 %s не е еднозначна"
 
-#: gitk:8678
+#: gitk:8697
 #, tcl-format
 msgid "Revision %s is not known"
 msgstr "Непозната версия %s"
 
-#: gitk:8688
+#: gitk:8707
 #, tcl-format
 msgid "SHA1 id %s is not known"
 msgstr "Непозната сума по SHA1 %s"
 
-#: gitk:8690
+#: gitk:8709
 #, tcl-format
 msgid "Revision %s is not in the current view"
 msgstr "Версия %s не е в текущия изглед"
 
-#: gitk:8832 gitk:8847
+#: gitk:8851 gitk:8866
 msgid "Date"
 msgstr "Дата"
 
-#: gitk:8835
+#: gitk:8854
 msgid "Children"
 msgstr "Деца"
 
-#: gitk:8898
+#: gitk:8917
 #, tcl-format
 msgid "Reset %s branch to here"
 msgstr "Зануляване на клона „%s“ към текущото подаване"
 
-#: gitk:8900
+#: gitk:8919
 msgid "Detached head: can't reset"
 msgstr "Несвързан връх: невъзможно зануляване"
 
-#: gitk:9005 gitk:9011
+#: gitk:9024 gitk:9030
 msgid "Skipping merge commit "
 msgstr "Пропускане на подаването на сливането"
 
-#: gitk:9020 gitk:9025
+#: gitk:9039 gitk:9044
 msgid "Error getting patch ID for "
 msgstr "Грешка при получаването на идентификатора на "
 
-#: gitk:9021 gitk:9026
+#: gitk:9040 gitk:9045
 msgid " - stopping\n"
 msgstr " — спиране\n"
 
-#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065
+#: gitk:9050 gitk:9053 gitk:9061 gitk:9075 gitk:9084
 msgid "Commit "
 msgstr "Подаване"
 
-#: gitk:9035
+#: gitk:9054
 msgid ""
 " is the same patch as\n"
 "       "
@@ -896,7 +912,7 @@ msgstr ""
 " е същата кръпка като\n"
 "       "
 
-#: gitk:9043
+#: gitk:9062
 msgid ""
 " differs from\n"
 "       "
@@ -904,7 +920,7 @@ msgstr ""
 " се различава от\n"
 "       "
 
-#: gitk:9045
+#: gitk:9064
 msgid ""
 "Diff of commits:\n"
 "\n"
@@ -912,130 +928,130 @@ msgstr ""
 "Разлика между подаванията:\n"
 "\n"
 
-#: gitk:9057 gitk:9066
+#: gitk:9076 gitk:9085
 #, tcl-format
 msgid " has %s children - stopping\n"
 msgstr " има %s деца — спиране\n"
 
-#: gitk:9085
+#: gitk:9104
 #, tcl-format
 msgid "Error writing commit to file: %s"
 msgstr "Грешка при запазването на подаването във файл: %s"
 
-#: gitk:9091
+#: gitk:9110
 #, tcl-format
 msgid "Error diffing commits: %s"
 msgstr "Грешка при изчисляването на разликите между подаванията: %s"
 
-#: gitk:9137
+#: gitk:9156
 msgid "Top"
 msgstr "Най-горе"
 
-#: gitk:9138
+#: gitk:9157
 msgid "From"
 msgstr "От"
 
-#: gitk:9143
+#: gitk:9162
 msgid "To"
 msgstr "До"
 
-#: gitk:9167
+#: gitk:9186
 msgid "Generate patch"
 msgstr "Генериране на кръпка"
 
-#: gitk:9169
+#: gitk:9188
 msgid "From:"
 msgstr "От:"
 
-#: gitk:9178
+#: gitk:9197
 msgid "To:"
 msgstr "До:"
 
-#: gitk:9187
+#: gitk:9206
 msgid "Reverse"
 msgstr "Обръщане"
 
-#: gitk:9189 gitk:9385
+#: gitk:9208 gitk:9418
 msgid "Output file:"
 msgstr "Запазване във файла:"
 
-#: gitk:9195
+#: gitk:9214
 msgid "Generate"
 msgstr "Генериране"
 
-#: gitk:9233
+#: gitk:9252
 msgid "Error creating patch:"
 msgstr "Грешка при създаването на кръпка:"
 
-#: gitk:9256 gitk:9373 gitk:9430
+#: gitk:9275 gitk:9406 gitk:9463
 msgid "ID:"
 msgstr "Идентификатор:"
 
-#: gitk:9265
+#: gitk:9284
 msgid "Tag name:"
 msgstr "Име на етикет:"
 
-#: gitk:9268
+#: gitk:9287
 msgid "Tag message is optional"
 msgstr "Съобщението за етикет е незадължително"
 
-#: gitk:9270
+#: gitk:9289
 msgid "Tag message:"
 msgstr "Съобщение за етикет:"
 
-#: gitk:9274 gitk:9439
+#: gitk:9293 gitk:9472
 msgid "Create"
 msgstr "Създаване"
 
-#: gitk:9292
+#: gitk:9311
 msgid "No tag name specified"
 msgstr "Липсва име на етикет"
 
-#: gitk:9296
+#: gitk:9315
 #, tcl-format
 msgid "Tag \"%s\" already exists"
 msgstr "Етикетът „%s“ вече съществува"
 
-#: gitk:9306
+#: gitk:9325
 msgid "Error creating tag:"
 msgstr "Грешка при създаването на етикет:"
 
-#: gitk:9382
+#: gitk:9415
 msgid "Command:"
 msgstr "Команда:"
 
-#: gitk:9390
+#: gitk:9423
 msgid "Write"
 msgstr "Запазване"
 
-#: gitk:9408
+#: gitk:9441
 msgid "Error writing commit:"
 msgstr "Грешка при запазването на подаването:"
 
-#: gitk:9435
+#: gitk:9468
 msgid "Name:"
 msgstr "Име:"
 
-#: gitk:9458
+#: gitk:9491
 msgid "Please specify a name for the new branch"
 msgstr "Укажете име за новия клон"
 
-#: gitk:9463
+#: gitk:9496
 #, tcl-format
 msgid "Branch '%s' already exists. Overwrite?"
 msgstr "Клонът „%s“ вече съществува. Да бъде ли презаписан?"
 
-#: gitk:9530
+#: gitk:9563
 #, tcl-format
 msgid "Commit %s is already included in branch %s -- really re-apply it?"
 msgstr ""
 "Подаването „%s“ вече е включено в клона „%s“ — да бъде ли приложено отново?"
 
-#: gitk:9535
+#: gitk:9568
 msgid "Cherry-picking"
 msgstr "Отбиране"
 
-#: gitk:9544
+#: gitk:9577
 #, tcl-format
 msgid ""
 "Cherry-pick failed because of local changes to file '%s'.\n"
@@ -1044,7 +1060,7 @@ msgstr ""
 "Неуспешно отбиране, защото във файла „%s“ има локални промени.\n"
 "Подайте, занулете или ги скатайте и пробвайте отново."
 
-#: gitk:9550
+#: gitk:9583
 msgid ""
 "Cherry-pick failed because of merge conflict.\n"
 "Do you wish to run git citool to resolve it?"
@@ -1052,20 +1068,20 @@ msgstr ""
 "Неуспешно отбиране поради конфликти при сливане.\n"
 "Искате ли да ги коригирате чрез „git citool“?"
 
-#: gitk:9566 gitk:9624
+#: gitk:9599 gitk:9657
 msgid "No changes committed"
 msgstr "Не са подадени промени"
 
-#: gitk:9593
+#: gitk:9626
 #, tcl-format
 msgid "Commit %s is not included in branch %s -- really revert it?"
 msgstr "Подаването „%s“ не е включено в клона „%s“. Да бъде ли отменено?"
 
-#: gitk:9598
+#: gitk:9631
 msgid "Reverting"
 msgstr "Отмяна"
 
-#: gitk:9606
+#: gitk:9639
 #, tcl-format
 msgid ""
 "Revert failed because of local changes to the following files:%s Please "
@@ -1074,7 +1090,7 @@ msgstr ""
 "Неуспешна отмяна, защото във файла „%s“ има локални промени.\n"
 "Подайте, занулете или ги скатайте и пробвайте отново.<"
 
-#: gitk:9610
+#: gitk:9643
 msgid ""
 "Revert failed because of merge conflict.\n"
 " Do you wish to run git citool to resolve it?"
@@ -1082,28 +1098,28 @@ msgstr ""
 "Неуспешно отмяна поради конфликти при сливане.\n"
 "Искате ли да ги коригирате чрез „git citool“?"
 
-#: gitk:9653
+#: gitk:9686
 msgid "Confirm reset"
 msgstr "Потвърждаване на зануляването"
 
-#: gitk:9655
+#: gitk:9688
 #, tcl-format
 msgid "Reset branch %s to %s?"
 msgstr "Да се занули ли клонът „%s“ към „%s“?"
 
-#: gitk:9657
+#: gitk:9690
 msgid "Reset type:"
 msgstr "Вид зануляване:"
 
-#: gitk:9660
+#: gitk:9693
 msgid "Soft: Leave working tree and index untouched"
 msgstr "Слабо: работното дърво и индекса остават същите"
 
-#: gitk:9663
+#: gitk:9696
 msgid "Mixed: Leave working tree untouched, reset index"
 msgstr "Смесено: работното дърво остава същото, индексът се занулява"
 
-#: gitk:9666
+#: gitk:9699
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
@@ -1111,19 +1127,19 @@ msgstr ""
 "Силно: зануляване и на работното дърво, и на индекса\n"
 "(*ВСИЧКИ* локални промени ще бъдат безвъзвратно загубени)"
 
-#: gitk:9683
+#: gitk:9716
 msgid "Resetting"
 msgstr "Зануляване"
 
-#: gitk:9743
+#: gitk:9776
 msgid "Checking out"
 msgstr "Изтегляне"
 
-#: gitk:9796
+#: gitk:9829
 msgid "Cannot delete the currently checked-out branch"
 msgstr "Текущо изтегленият клон не може да бъде изтрит"
 
-#: gitk:9802
+#: gitk:9835
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
@@ -1132,16 +1148,16 @@ msgstr ""
 "Подаванията на клона „%s“ не са на никой друг клон.\n"
 "Наистина ли да се изтрие клонът „%s“?"
 
-#: gitk:9833
+#: gitk:9866
 #, tcl-format
 msgid "Tags and heads: %s"
 msgstr "Етикети и върхове: %s"
 
-#: gitk:9850
+#: gitk:9883
 msgid "Filter"
 msgstr "Филтриране"
 
-#: gitk:10146
+#: gitk:10179
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
@@ -1149,201 +1165,201 @@ msgstr ""
 "Грешка при прочитането на топологията на подаванията. Информацията за клона "
 "и предшестващите/следващите етикети ще е непълна."
 
-#: gitk:11123
+#: gitk:11156
 msgid "Tag"
 msgstr "Етикет"
 
-#: gitk:11127
+#: gitk:11160
 msgid "Id"
 msgstr "Идентификатор"
 
-#: gitk:11210
+#: gitk:11243
 msgid "Gitk font chooser"
 msgstr "Избор на шрифт за Gitk"
 
-#: gitk:11227
+#: gitk:11260
 msgid "B"
 msgstr "Ч"
 
-#: gitk:11230
+#: gitk:11263
 msgid "I"
 msgstr "К"
 
-#: gitk:11348
+#: gitk:11381
 msgid "Commit list display options"
 msgstr "Настройки на списъка с подавания"
 
-#: gitk:11351
+#: gitk:11384
 msgid "Maximum graph width (lines)"
 msgstr "Максимална широчина на графа (в редове)"
 
-#: gitk:11355
+#: gitk:11388
 #, no-tcl-format
 msgid "Maximum graph width (% of pane)"
 msgstr "Максимална широчина на графа (% от панела)"
 
-#: gitk:11358
+#: gitk:11391
 msgid "Show local changes"
 msgstr "Показване на локалните промени"
 
-#: gitk:11361
+#: gitk:11394
 msgid "Auto-select SHA1 (length)"
 msgstr "Автоматично избиране на SHA1 (дължина)"
 
-#: gitk:11365
+#: gitk:11398
 msgid "Hide remote refs"
 msgstr "Скриване на отдалечените указатели"
 
-#: gitk:11369
+#: gitk:11402
 msgid "Diff display options"
 msgstr "Настройки на показването на разликите"
 
-#: gitk:11371
+#: gitk:11404
 msgid "Tab spacing"
 msgstr "Широчина на табулатора"
 
-#: gitk:11374
+#: gitk:11407
 msgid "Display nearby tags/heads"
 msgstr "Извеждане на близките етикети и върхове"
 
-#: gitk:11377
+#: gitk:11410
 msgid "Maximum # tags/heads to show"
 msgstr "Максимален брой етикети/върхове за показване"
 
-#: gitk:11380
+#: gitk:11413
 msgid "Limit diffs to listed paths"
 msgstr "Разлика само в избраните пътища"
 
-#: gitk:11383
+#: gitk:11416
 msgid "Support per-file encodings"
 msgstr "Поддръжка на различни кодирания за всеки файл"
 
-#: gitk:11389 gitk:11536
+#: gitk:11422 gitk:11569
 msgid "External diff tool"
 msgstr "Външен инструмент за разлики"
 
-#: gitk:11390
+#: gitk:11423
 msgid "Choose..."
 msgstr "Избор…"
 
-#: gitk:11395
+#: gitk:11428
 msgid "General options"
 msgstr "Общи настройки"
 
-#: gitk:11398
+#: gitk:11431
 msgid "Use themed widgets"
 msgstr "Използване на тема за графичните обекти"
 
-#: gitk:11400
+#: gitk:11433
 msgid "(change requires restart)"
 msgstr "(промяната изисква рестартиране на Gitk)"
 
-#: gitk:11402
+#: gitk:11435
 msgid "(currently unavailable)"
 msgstr "(в момента недостъпно)"
 
-#: gitk:11413
+#: gitk:11446
 msgid "Colors: press to choose"
 msgstr "Цветове: избира се с натискане"
 
-#: gitk:11416
+#: gitk:11449
 msgid "Interface"
 msgstr "Интерфейс"
 
-#: gitk:11417
+#: gitk:11450
 msgid "interface"
 msgstr "интерфейс"
 
-#: gitk:11420
+#: gitk:11453
 msgid "Background"
 msgstr "Фон"
 
-#: gitk:11421 gitk:11451
+#: gitk:11454 gitk:11484
 msgid "background"
 msgstr "фон"
 
-#: gitk:11424
+#: gitk:11457
 msgid "Foreground"
 msgstr "Знаци"
 
-#: gitk:11425
+#: gitk:11458
 msgid "foreground"
 msgstr "знаци"
 
-#: gitk:11428
+#: gitk:11461
 msgid "Diff: old lines"
 msgstr "Разлика: стари редове"
 
-#: gitk:11429
+#: gitk:11462
 msgid "diff old lines"
 msgstr "разлика, стари редове"
 
-#: gitk:11433
+#: gitk:11466
 msgid "Diff: new lines"
 msgstr "Разлика: нови редове"
 
-#: gitk:11434
+#: gitk:11467
 msgid "diff new lines"
 msgstr "разлика, нови редове"
 
-#: gitk:11438
+#: gitk:11471
 msgid "Diff: hunk header"
 msgstr "Разлика: начало на парче"
 
-#: gitk:11440
+#: gitk:11473
 msgid "diff hunk header"
 msgstr "разлика, начало на парче"
 
-#: gitk:11444
+#: gitk:11477
 msgid "Marked line bg"
 msgstr "Фон на отбелязан ред"
 
-#: gitk:11446
+#: gitk:11479
 msgid "marked line background"
 msgstr "фон на отбелязан ред"
 
-#: gitk:11450
+#: gitk:11483
 msgid "Select bg"
 msgstr "Избор на фон"
 
-#: gitk:11459
+#: gitk:11492
 msgid "Fonts: press to choose"
 msgstr "Шрифтове: избира се с натискане"
 
-#: gitk:11461
+#: gitk:11494
 msgid "Main font"
 msgstr "Основен шрифт"
 
-#: gitk:11462
+#: gitk:11495
 msgid "Diff display font"
 msgstr "Шрифт за разликите"
 
-#: gitk:11463
+#: gitk:11496
 msgid "User interface font"
 msgstr "Шрифт на интерфейса"
 
-#: gitk:11485
+#: gitk:11518
 msgid "Gitk preferences"
 msgstr "Настройки на Gitk"
 
-#: gitk:11494
+#: gitk:11527
 msgid "General"
 msgstr "Общи"
 
-#: gitk:11495
+#: gitk:11528
 msgid "Colors"
 msgstr "Цветове"
 
-#: gitk:11496
+#: gitk:11529
 msgid "Fonts"
 msgstr "Шрифтове"
 
-#: gitk:11546
+#: gitk:11579
 #, tcl-format
 msgid "Gitk: choose color for %s"
 msgstr "Gitk: избор на цвят на „%s“"
 
-#: gitk:12059
+#: gitk:12092
 msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
@@ -1351,15 +1367,15 @@ msgstr ""
 "Тази версия на Tcl/Tk не се поддържа от Gitk.\n"
 " Необходима ви е поне Tcl/Tk 8.4."
 
-#: gitk:12269
+#: gitk:12302
 msgid "Cannot find a git repository here."
 msgstr "Тук липсва хранилище на Git."
 
-#: gitk:12316
+#: gitk:12349
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
 msgstr "Нееднозначен аргумент „%s“: има и такава версия, и такъв файл"
 
-#: gitk:12328
+#: gitk:12361
 msgid "Bad arguments to gitk:"
 msgstr "Неправилни аргументи на gitk:"
index d9ba4052e20bc8dddc091e3a60103d33af349a63..bde749ed8ac7391746e06a00742c44905f7e686e 100644 (file)
@@ -23,11 +23,11 @@ msgstr "Liste der nicht zusammengeführten Dateien nicht gefunden:"
 
 #: gitk:212 gitk:2381
 msgid "Color words"
-msgstr ""
+msgstr "Wörter einfärben"
 
 #: gitk:217 gitk:2381 gitk:8220 gitk:8253
 msgid "Markup words"
-msgstr ""
+msgstr "Wörter kennzeichnen"
 
 #: gitk:324
 msgid "Error parsing revisions:"
@@ -187,7 +187,7 @@ msgstr "Änderungen:"
 
 #: gitk:2304 gitk:4779
 msgid "changing lines matching:"
-msgstr ""
+msgstr "Geänderte Zeilen entsprechen:"
 
 #: gitk:2313 gitk:2315 gitk:4766
 msgid "Exact"
@@ -248,7 +248,7 @@ msgstr "Leerzeichenänderungen ignorieren"
 
 #: gitk:2378 gitk:2380 gitk:7959 gitk:8206
 msgid "Line diff"
-msgstr ""
+msgstr "Zeilenunterschied"
 
 #: gitk:2445
 msgid "Patch"
@@ -307,19 +307,16 @@ msgid "Compare with marked commit"
 msgstr "Mit Lesezeichen vergleichen"
 
 #: gitk:2629 gitk:2640
-#, fuzzy
 msgid "Diff this -> marked commit"
-msgstr "Vergleich: diese -> gewählte"
+msgstr "Vergleich: diese -> gewählte Version"
 
 #: gitk:2630 gitk:2641
-#, fuzzy
 msgid "Diff marked commit -> this"
-msgstr "Vergleich: gewählte -> diese"
+msgstr "Vergleich: gewählte -> diese Version"
 
 #: gitk:2631
-#, fuzzy
 msgid "Revert this commit"
-msgstr "Lesezeichen setzen"
+msgstr "Version umkehren"
 
 #: gitk:2647
 msgid "Check out this branch"
@@ -331,7 +328,7 @@ msgstr "Zweig löschen"
 
 #: gitk:2649
 msgid "Copy branch name"
-msgstr ""
+msgstr "Zweigname kopieren"
 
 #: gitk:2656
 msgid "Highlight this too"
@@ -351,7 +348,7 @@ msgstr "Annotieren der Elternversion"
 
 #: gitk:2660
 msgid "Copy path"
-msgstr ""
+msgstr "Pfad kopieren"
 
 #: gitk:2667
 msgid "Show origin of this line"
@@ -362,7 +359,6 @@ msgid "Run git gui blame on this line"
 msgstr "Diese Zeile annotieren (»git gui blame«)"
 
 #: gitk:3014
-#, fuzzy
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
@@ -374,7 +370,7 @@ msgstr ""
 "\n"
 "Gitk - eine Visualisierung der Git-Historie\n"
 "\n"
-"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
+"Copyright \\u00a9 2005-2014 Paul Mackerras\n"
 "\n"
 "Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public "
 "License"
@@ -397,9 +393,9 @@ msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tBeenden"
 
 #: gitk:3049
-#, fuzzy, tcl-format
+#, tcl-format
 msgid "<%s-W>\t\tClose window"
-msgstr "<%s-F>\t\tSuchen"
+msgstr "<%s-F>\t\tFenster schließen"
 
 #: gitk:3050
 msgid "<Home>\t\tMove to first commit"
@@ -410,19 +406,16 @@ msgid "<End>\t\tMove to last commit"
 msgstr "<Ende>\t\tZur ältesten Version springen"
 
 #: gitk:3052
-#, fuzzy
 msgid "<Up>, p, k\tMove up one commit"
-msgstr "<Hoch>, p, i\tNächste neuere Version"
+msgstr "<Hoch>, p, k\tNächste neuere Version"
 
 #: gitk:3053
-#, fuzzy
 msgid "<Down>, n, j\tMove down one commit"
-msgstr "<Runter>, n, k\tNächste ältere Version"
+msgstr "<Runter>, n, j\tNächste ältere Version"
 
 #: gitk:3054
-#, fuzzy
 msgid "<Left>, z, h\tGo back in history list"
-msgstr "<Links>, z, j\tEine Version zurückgehen"
+msgstr "<Links>, z, h\tEine Version zurückgehen"
 
 #: gitk:3055
 msgid "<Right>, x, l\tGo forward in history list"
@@ -431,7 +424,7 @@ msgstr "<Rechts>, x, l\tEine Version weitergehen"
 #: gitk:3056
 #, tcl-format
 msgid "<%s-n>\tGo to n-th parent of current commit in history list"
-msgstr ""
+msgstr "<%s-n>\tZu n-ter Elternversion in Versionshistorie springen"
 
 #: gitk:3057
 msgid "<PageUp>\tMove up one page in commit list"
@@ -514,9 +507,8 @@ msgid "<Return>\tMove to next find hit"
 msgstr "<Eingabetaste>\tWeitersuchen"
 
 #: gitk:3075
-#, fuzzy
 msgid "g\t\tGo to commit"
-msgstr "<Ende>\t\tZur ältesten Version springen"
+msgstr "g\t\tZu Version springen"
 
 #: gitk:3076
 msgid "/\t\tFocus the search box"
@@ -673,9 +665,8 @@ msgid "Matches all Commit Info criteria"
 msgstr "Alle Versionsinformationen-Kriterien erfüllen"
 
 #: gitk:4086
-#, fuzzy
 msgid "Matches no Commit Info criteria"
-msgstr "Alle Versionsinformationen-Kriterien erfüllen"
+msgstr "keine Versionsinformationen-Kriterien erfüllen"
 
 #: gitk:4087
 msgid "Changes to Files:"
@@ -802,7 +793,7 @@ msgstr "Lokale Änderungen, nicht bereitgestellt"
 
 #: gitk:7134
 msgid "and many more"
-msgstr ""
+msgstr "und weitere"
 
 #: gitk:7137
 msgid "many"
@@ -1066,34 +1057,31 @@ msgid "No changes committed"
 msgstr "Keine Änderungen eingetragen"
 
 #: gitk:9593
-#, fuzzy, tcl-format
+#, tcl-format
 msgid "Commit %s is not included in branch %s -- really revert it?"
 msgstr ""
-"Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut "
-"eintragen?"
+"Version »%s« ist nicht im Zweig »%s« enthalten -- trotzdem umkehren?"
 
 #: gitk:9598
-#, fuzzy
 msgid "Reverting"
-msgstr "Zurücksetzen"
+msgstr "Umkehren"
 
 #: gitk:9606
-#, fuzzy, tcl-format
+#, tcl-format
 msgid ""
 "Revert failed because of local changes to the following files:%s Please "
 "commit, reset or stash  your changes and try again."
 msgstr ""
-"Pflücken fehlgeschlagen, da noch lokale Änderungen in Datei »%s«\n"
+"Umkehren fehlgeschlagen, da noch lokale Änderungen in Datei »%s«\n"
 "vorliegen. Bitte diese Änderungen eintragen, zurücksetzen oder\n"
 "zwischenspeichern (»git stash«) und dann erneut versuchen."
 
 #: gitk:9610
-#, fuzzy
 msgid ""
 "Revert failed because of merge conflict.\n"
 " Do you wish to run git citool to resolve it?"
 msgstr ""
-"Pflücken fehlgeschlagen, da ein Zusammenführungs-Konflikt aufgetreten\n"
+"Umkehren fehlgeschlagen, da ein Zusammenführungs-Konflikt aufgetreten\n"
 "ist. Soll das Zusammenführungs-Werkzeug (»git citool«) aufgerufen\n"
 "werden, um diesen Konflikt aufzulösen?"
 
@@ -1206,9 +1194,8 @@ msgid "Show local changes"
 msgstr "Lokale Änderungen anzeigen"
 
 #: gitk:11361
-#, fuzzy
 msgid "Auto-select SHA1 (length)"
-msgstr "SHA1-Hashwert automatisch auswählen"
+msgstr "SHA1-Hashwert (Länge) automatisch auswählen"
 
 #: gitk:11365
 msgid "Hide remote refs"
@@ -1223,13 +1210,12 @@ msgid "Tab spacing"
 msgstr "Tabulatorbreite"
 
 #: gitk:11374
-#, fuzzy
 msgid "Display nearby tags/heads"
-msgstr "Naheliegende Markierungen anzeigen"
+msgstr "Naheliegende Markierungen/Zweigspitzen anzeigen"
 
 #: gitk:11377
 msgid "Maximum # tags/heads to show"
-msgstr ""
+msgstr "Maximale Anzahl anzuzeigender Markierungen/Zweigspitzen"
 
 #: gitk:11380
 msgid "Limit diffs to listed paths"
@@ -1348,17 +1334,16 @@ msgid "Gitk preferences"
 msgstr "Gitk-Einstellungen"
 
 #: gitk:11494
-#, fuzzy
 msgid "General"
-msgstr "Erzeugen"
+msgstr "Allgemein"
 
 #: gitk:11495
 msgid "Colors"
-msgstr ""
+msgstr "Farben"
 
 #: gitk:11496
 msgid "Fonts"
-msgstr ""
+msgstr "Schriftarten"
 
 #: gitk:11546
 #, tcl-format
@@ -1370,6 +1355,8 @@ msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
 msgstr ""
+"Entschuldigung, gitk kann nicht mit dieser Tcl/Tk Version ausgeführt werden.\n"
+" Gitk erfordert mindestens Tcl/Tk 8.4."
 
 #: gitk:12269
 msgid "Cannot find a git repository here."
index 80f72fb4535a2cfb4dc33b9f12fd002beb3f5d86..c44f994fa5807036043e2ebe197e832c9d2e3e1f 100644 (file)
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the gitk package.
 # Translators:
 # Emmanuel Trillaud <etrillaud@gmail.com>
-#
+# Jean-Noël Avila <jn.avila@free.fr>
 msgid ""
 msgstr ""
 "Project-Id-Version: gitk\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-17 14:32+1000\n"
-"PO-Revision-Date: 2009-11-19 22:13+0100\n"
-"Last-Translator: Emmanuel Trillaud <etrillaud@gmail.com>\n"
+"POT-Creation-Date: 2016-01-22 22:04+0100\n"
+"PO-Revision-Date: 2016-01-22 23:28+0100\n"
+"Last-Translator: Jean-Noël Avila <jn.avila@free.fr>\n"
 "Language-Team: git@vger.kernel.org\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
@@ -23,13 +23,13 @@ msgstr ""
 msgid "Couldn't get list of unmerged files:"
 msgstr "Impossible de récupérer la liste des fichiers non fusionnés :"
 
-#: gitk:212 gitk:2381
+#: gitk:212 gitk:2399
 msgid "Color words"
-msgstr ""
+msgstr "Colorier les mots différents"
 
-#: gitk:217 gitk:2381 gitk:8220 gitk:8253
+#: gitk:217 gitk:2399 gitk:8239 gitk:8272
 msgid "Markup words"
-msgstr ""
+msgstr "Marquer les mots différents"
 
 #: gitk:324
 msgid "Error parsing revisions:"
@@ -47,13 +47,10 @@ msgstr ""
 
 # FIXME : améliorer la traduction de 'file limite'
 #: gitk:396
-#, fuzzy
 msgid ""
 "No files selected: --merge specified but no unmerged files are within file "
 "limit."
-msgstr ""
-"Aucun fichier sélectionné : --merge précisé mais aucun fichier non fusionné "
-"n'est dans la limite des fichiers."
+msgstr "Aucun fichier sélectionné : --merge précisé mais aucun fichier non fusionné n'est dans la limite des fichiers."
 
 #: gitk:418 gitk:566
 msgid "Error executing git log:"
@@ -63,15 +60,15 @@ msgstr "Erreur à l'exécution de git log :"
 msgid "Reading"
 msgstr "Lecture en cours"
 
-#: gitk:496 gitk:4525
+#: gitk:496 gitk:4544
 msgid "Reading commits..."
 msgstr "Lecture des commits..."
 
-#: gitk:499 gitk:1637 gitk:4528
+#: gitk:499 gitk:1637 gitk:4547
 msgid "No commits selected"
 msgstr "Aucun commit sélectionné"
 
-#: gitk:1445 gitk:4045 gitk:12432
+#: gitk:1445 gitk:4064 gitk:12469
 msgid "Command line"
 msgstr "Ligne de commande"
 
@@ -83,290 +80,294 @@ msgstr "Impossible de lire la sortie de git log :"
 msgid "No commit information available"
 msgstr "Aucune information disponible sur le commit"
 
-#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521
+#: gitk:1903 gitk:1932 gitk:4334 gitk:9702 gitk:11274 gitk:11554
 msgid "OK"
 msgstr "OK"
 
-#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671
-#: gitk:11242 gitk:11522
+#: gitk:1934 gitk:4336 gitk:9215 gitk:9294 gitk:9424 gitk:9473 gitk:9704
+#: gitk:11275 gitk:11555
 msgid "Cancel"
 msgstr "Annuler"
 
-#: gitk:2069
+#: gitk:2083
 msgid "&Update"
 msgstr "Mise à jour"
 
-#: gitk:2070
+#: gitk:2084
 msgid "&Reload"
-msgstr "Recharger"
+msgstr "&Recharger"
 
-#: gitk:2071
+#: gitk:2085
 msgid "Reread re&ferences"
-msgstr "Relire les références"
+msgstr "Relire les ré&férences"
 
-#: gitk:2072
+#: gitk:2086
 msgid "&List references"
-msgstr "Lister les références"
+msgstr "&Lister les références"
 
-#: gitk:2074
+#: gitk:2088
 msgid "Start git &gui"
-msgstr "Démarrer git gui"
+msgstr "Démarrer git &gui"
 
-#: gitk:2076
+#: gitk:2090
 msgid "&Quit"
-msgstr "Quitter"
+msgstr "&Quitter"
 
-#: gitk:2068
+#: gitk:2082
 msgid "&File"
-msgstr "Fichier"
+msgstr "&Fichier"
 
-#: gitk:2080
+#: gitk:2094
 msgid "&Preferences"
 msgstr "Préférences"
 
-#: gitk:2079
+#: gitk:2093
 msgid "&Edit"
-msgstr "Éditer"
+msgstr "&Éditer"
 
-#: gitk:2084
+#: gitk:2098
 msgid "&New view..."
-msgstr "Nouvelle vue..."
+msgstr "&Nouvelle vue..."
 
-#: gitk:2085
+#: gitk:2099
 msgid "&Edit view..."
-msgstr "Éditer la vue..."
+msgstr "&Éditer la vue..."
 
-#: gitk:2086
+#: gitk:2100
 msgid "&Delete view"
 msgstr "Supprimer la vue"
 
-#: gitk:2088 gitk:4043
+#: gitk:2102
 msgid "&All files"
 msgstr "Tous les fichiers"
 
-#: gitk:2083 gitk:4067
+#: gitk:2097
 msgid "&View"
-msgstr "Vue"
+msgstr "&Vue"
 
-#: gitk:2093 gitk:2103 gitk:3012
+#: gitk:2107 gitk:2117
 msgid "&About gitk"
 msgstr "À propos de gitk"
 
-#: gitk:2094 gitk:2108
+#: gitk:2108 gitk:2122
 msgid "&Key bindings"
 msgstr "Raccourcis clavier"
 
-#: gitk:2092 gitk:2107
+#: gitk:2106 gitk:2121
 msgid "&Help"
 msgstr "Aide"
 
-#: gitk:2185 gitk:8652
+#: gitk:2199 gitk:8671
 msgid "SHA1 ID:"
 msgstr "Id SHA1 :"
 
-#: gitk:2229
+#: gitk:2243
 msgid "Row"
 msgstr "Colonne"
 
-#: gitk:2267
+#: gitk:2281
 msgid "Find"
 msgstr "Recherche"
 
-#: gitk:2295
+#: gitk:2309
 msgid "commit"
 msgstr "commit"
 
-#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827
-#: gitk:6912
+#: gitk:2313 gitk:2315 gitk:4706 gitk:4729 gitk:4753 gitk:6774 gitk:6846
+#: gitk:6931
 msgid "containing:"
 msgstr "contient :"
 
-#: gitk:2302 gitk:3526 gitk:3531 gitk:4763
+#: gitk:2316 gitk:3545 gitk:3550 gitk:4782
 msgid "touching paths:"
 msgstr "chemins modifiés :"
 
-#: gitk:2303 gitk:4777
+#: gitk:2317 gitk:4796
 msgid "adding/removing string:"
 msgstr "ajoute/supprime la chaîne :"
 
-#: gitk:2304 gitk:4779
+#: gitk:2318 gitk:4798
 msgid "changing lines matching:"
-msgstr ""
+msgstr "modifie les lignes vérifiant :"
 
-#: gitk:2313 gitk:2315 gitk:4766
+#: gitk:2327 gitk:2329 gitk:4785
 msgid "Exact"
 msgstr "Exact"
 
-#: gitk:2315 gitk:4854 gitk:6723
+#: gitk:2329 gitk:4873 gitk:6742
 msgid "IgnCase"
 msgstr "Ignorer la casse"
 
-#: gitk:2315 gitk:4736 gitk:4852 gitk:6719
+#: gitk:2329 gitk:4755 gitk:4871 gitk:6738
 msgid "Regexp"
 msgstr "Expression régulière"
 
-#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916
+#: gitk:2331 gitk:2332 gitk:4893 gitk:4923 gitk:4930 gitk:6867 gitk:6935
 msgid "All fields"
 msgstr "Tous les champs"
 
-#: gitk:2318 gitk:4871 gitk:4904 gitk:6786
+#: gitk:2332 gitk:4890 gitk:4923 gitk:6805
 msgid "Headline"
-msgstr "Surligner"
+msgstr "Titre"
 
-#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389
+#: gitk:2333 gitk:4890 gitk:6805 gitk:6935 gitk:7408
 msgid "Comments"
 msgstr "Commentaires"
 
-#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830
-#: gitk:8845
+#: gitk:2333 gitk:4890 gitk:4895 gitk:4930 gitk:6805 gitk:7343 gitk:8849
+#: gitk:8864
 msgid "Author"
 msgstr "Auteur"
 
-#: gitk:2319 gitk:4871 gitk:6786 gitk:7326
+#: gitk:2333 gitk:4890 gitk:6805 gitk:7345
 msgid "Committer"
-msgstr "Auteur du commit"
+msgstr "Validateur"
 
-#: gitk:2350
+#: gitk:2367
 msgid "Search"
 msgstr "Rechercher"
 
-#: gitk:2358
+#: gitk:2375
 msgid "Diff"
 msgstr "Diff"
 
-#: gitk:2360
+#: gitk:2377
 msgid "Old version"
 msgstr "Ancienne version"
 
-#: gitk:2362
+#: gitk:2379
 msgid "New version"
 msgstr "Nouvelle version"
 
-#: gitk:2364
+#: gitk:2382
 msgid "Lines of context"
 msgstr "Lignes de contexte"
 
-#: gitk:2374
+#: gitk:2392
 msgid "Ignore space change"
 msgstr "Ignorer les modifications d'espace"
 
-#: gitk:2378 gitk:2380 gitk:7959 gitk:8206
+#: gitk:2396 gitk:2398 gitk:7978 gitk:8225
 msgid "Line diff"
-msgstr ""
+msgstr "différence par ligne"
 
-#: gitk:2445
+#: gitk:2463
 msgid "Patch"
 msgstr "Patch"
 
-#: gitk:2447
+#: gitk:2465
 msgid "Tree"
 msgstr "Arbre"
 
-#: gitk:2617 gitk:2637
+#: gitk:2635 gitk:2656
 msgid "Diff this -> selected"
-msgstr "Diff entre ceci et la sélection"
+msgstr "Diff ceci -> la sélection"
 
-#: gitk:2618 gitk:2638
+#: gitk:2636 gitk:2657
 msgid "Diff selected -> this"
-msgstr "Diff entre sélection et ceci"
+msgstr "Diff sélection -> ceci"
 
-#: gitk:2619 gitk:2639
+#: gitk:2637 gitk:2658
 msgid "Make patch"
 msgstr "Créer patch"
 
-#: gitk:2620 gitk:9254
+#: gitk:2638 gitk:9273
 msgid "Create tag"
-msgstr "Créer tag"
+msgstr "Créer étiquette"
+
+#: gitk:2639
+msgid "Copy commit summary"
+msgstr "Copié le résumé du commit"
 
-#: gitk:2621 gitk:9371
+#: gitk:2640 gitk:9404
 msgid "Write commit to file"
 msgstr "Écrire le commit dans un fichier"
 
-#: gitk:2622 gitk:9428
+#: gitk:2641 gitk:9461
 msgid "Create new branch"
 msgstr "Créer une nouvelle branche"
 
-#: gitk:2623
+#: gitk:2642
 msgid "Cherry-pick this commit"
 msgstr "Cueillir (cherry-pick) ce commit"
 
-#: gitk:2624
+#: gitk:2643
 msgid "Reset HEAD branch to here"
 msgstr "Réinitialiser la branche HEAD vers cet état"
 
-#: gitk:2625
+#: gitk:2644
 msgid "Mark this commit"
 msgstr "Marquer ce commit"
 
-#: gitk:2626
+#: gitk:2645
 msgid "Return to mark"
 msgstr "Retourner à la marque"
 
-#: gitk:2627
+#: gitk:2646
 msgid "Find descendant of this and mark"
 msgstr "Chercher le descendant de ceci et le marquer"
 
-#: gitk:2628
+#: gitk:2647
 msgid "Compare with marked commit"
 msgstr "Comparer avec le commit marqué"
 
-#: gitk:2629 gitk:2640
-#, fuzzy
+#: gitk:2648 gitk:2659
 msgid "Diff this -> marked commit"
-msgstr "Diff entre ceci et la sélection"
+msgstr "Diff ceci -> sélection"
 
-#: gitk:2630 gitk:2641
-#, fuzzy
+#: gitk:2649 gitk:2660
 msgid "Diff marked commit -> this"
-msgstr "Diff entre sélection et ceci"
+msgstr "Diff entre sélection -> ceci"
 
-#: gitk:2631
-#, fuzzy
+#: gitk:2650
 msgid "Revert this commit"
-msgstr "Marquer ce commit"
+msgstr "Défaire ce commit"
 
-#: gitk:2647
+#: gitk:2666
 msgid "Check out this branch"
 msgstr "Récupérer cette branche"
 
-#: gitk:2648
+#: gitk:2667
 msgid "Remove this branch"
 msgstr "Supprimer cette branche"
 
-#: gitk:2649
+#: gitk:2668
 msgid "Copy branch name"
-msgstr ""
+msgstr "Copier la nom de la branche"
 
-#: gitk:2656
+#: gitk:2675
 msgid "Highlight this too"
 msgstr "Surligner également ceci"
 
-#: gitk:2657
+#: gitk:2676
 msgid "Highlight this only"
 msgstr "Surligner seulement ceci"
 
-#: gitk:2658
+#: gitk:2677
 msgid "External diff"
 msgstr "Diff externe"
 
-#: gitk:2659
+#: gitk:2678
 msgid "Blame parent commit"
 msgstr "Blâmer le commit parent"
 
-#: gitk:2660
+#: gitk:2679
 msgid "Copy path"
-msgstr ""
+msgstr "Copier le chemin"
 
-#: gitk:2667
+#: gitk:2686
 msgid "Show origin of this line"
 msgstr "Montrer l'origine de cette ligne"
 
-#: gitk:2668
+#: gitk:2687
 msgid "Run git gui blame on this line"
 msgstr "Exécuter git gui blame sur cette ligne"
 
-#: gitk:3014
-#, fuzzy
+#: gitk:3031
+msgid "About gitk"
+msgstr "À propos de gitk"
+
+#: gitk:3033
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
@@ -378,327 +379,329 @@ msgstr ""
 "\n"
 "Gitk - visualisateur de commit pour git\n"
 "\n"
-"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
+"Copyright \\u00a9 2005-2014 Paul Mackerras\n"
 "\n"
-"Utilisation et redistribution soumises aux termes de la GNU General Public "
-"License"
+"Utilisation et redistribution soumises aux termes de la GNU General Public License"
 
-#: gitk:3022 gitk:3089 gitk:9857
+#: gitk:3041 gitk:3108 gitk:9890
 msgid "Close"
 msgstr "Fermer"
 
-#: gitk:3043
+#: gitk:3062
 msgid "Gitk key bindings"
 msgstr "Raccourcis clavier de Gitk"
 
-#: gitk:3046
+#: gitk:3065
 msgid "Gitk key bindings:"
 msgstr "Raccourcis clavier de Gitk :"
 
-#: gitk:3048
+#: gitk:3067
 #, tcl-format
 msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tQuitter"
 
-#: gitk:3049
-#, fuzzy, tcl-format
+#: gitk:3068
+#, tcl-format
 msgid "<%s-W>\t\tClose window"
-msgstr "<%s-F>\t\tRechercher"
+msgstr "<%s-W>\t\tFermer la fenêtre"
 
-#: gitk:3050
+#: gitk:3069
 msgid "<Home>\t\tMove to first commit"
 msgstr "<Début>\t\tAller au premier commit"
 
-#: gitk:3051
+#: gitk:3070
 msgid "<End>\t\tMove to last commit"
 msgstr "<Fin>\t\tAller au dernier commit"
 
-#: gitk:3052
-#, fuzzy
+#: gitk:3071
 msgid "<Up>, p, k\tMove up one commit"
-msgstr "<Haut>, p, i\t Aller au commit suivant"
+msgstr "<Haut>, p, k\t Aller au commit précédent"
 
-#: gitk:3053
-#, fuzzy
+#: gitk:3072
 msgid "<Down>, n, j\tMove down one commit"
-msgstr "<Bas>, n, k\t Aller au commit précédent"
+msgstr "<Bas>, n, j\t Aller au commit suivant"
 
-#: gitk:3054
-#, fuzzy
+#: gitk:3073
 msgid "<Left>, z, h\tGo back in history list"
-msgstr "<Gauche>, z, j\tReculer dans l'historique"
+msgstr "<Gauche>, z, h\tReculer dans l'historique"
 
-#: gitk:3055
+#: gitk:3074
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Droite>, x, l\tAvancer dans l'historique"
 
-#: gitk:3056
+#: gitk:3075
 #, tcl-format
 msgid "<%s-n>\tGo to n-th parent of current commit in history list"
-msgstr ""
+msgstr "<%s-n>\tAller sur le n-ième parent du commit dans l'historique"
 
-#: gitk:3057
+#: gitk:3076
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<PageUp>\tMonter d'une page dans la liste des commits"
 
-#: gitk:3058
+#: gitk:3077
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<PageDown>\tDescendre d'une page dans la liste des commits"
 
-#: gitk:3059
+#: gitk:3078
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
 msgstr "<%s-Début>\tAller en haut de la liste des commits"
 
-#: gitk:3060
+#: gitk:3079
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
 msgstr "<%s-End>\tAller en bas de la liste des commits"
 
-#: gitk:3061
+#: gitk:3080
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
 msgstr "<%s-Up>\tMonter d'une ligne dans la liste des commits"
 
-#: gitk:3062
+#: gitk:3081
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
 msgstr "<%s-Down>\tDescendre d'une ligne dans la liste des commits"
 
-#: gitk:3063
+#: gitk:3082
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
 msgstr "<%s-PageUp>\tMonter d'une page dans la liste des commits"
 
-#: gitk:3064
+#: gitk:3083
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
 msgstr "<%s-PageDown>\tDescendre d'une page dans la liste des commits"
 
-#: gitk:3065
+#: gitk:3084
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr ""
 "<Shift-Up>\tRecherche en arrière (vers l'avant, commits les plus anciens)"
 
-#: gitk:3066
+#: gitk:3085
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr ""
 "<Shift-Down>\tRecherche en avant (vers l'arrière, commit les plus récents)"
 
-#: gitk:3067
+#: gitk:3086
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Supprimer>, b\tMonter d'une page dans la vue des diff"
 
-#: gitk:3068
+#: gitk:3087
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Backspace>\tMonter d'une page dans la vue des diff"
 
-#: gitk:3069
+#: gitk:3088
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Espace>\t\tDescendre d'une page dans la vue des diff"
 
-#: gitk:3070
+#: gitk:3089
 msgid "u\t\tScroll diff view up 18 lines"
 msgstr "u\t\tMonter de 18 lignes dans la vue des diff"
 
-#: gitk:3071
+#: gitk:3090
 msgid "d\t\tScroll diff view down 18 lines"
 msgstr "d\t\tDescendre de 18 lignes dans la vue des diff"
 
-#: gitk:3072
+#: gitk:3091
 #, tcl-format
 msgid "<%s-F>\t\tFind"
 msgstr "<%s-F>\t\tRechercher"
 
-#: gitk:3073
+#: gitk:3092
 #, tcl-format
 msgid "<%s-G>\t\tMove to next find hit"
 msgstr "<%s-G>\t\tAller au résultat de recherche suivant"
 
-#: gitk:3074
+#: gitk:3093
 msgid "<Return>\tMove to next find hit"
 msgstr "<Return>\t\tAller au résultat de recherche suivant"
 
-#: gitk:3075
-#, fuzzy
+#: gitk:3094
 msgid "g\t\tGo to commit"
-msgstr "<Fin>\t\tAller au dernier commit"
+msgstr "g\t\tAller au commit"
 
-#: gitk:3076
+#: gitk:3095
 msgid "/\t\tFocus the search box"
 msgstr "/\t\tFocus sur la zone de recherche"
 
-#: gitk:3077
+#: gitk:3096
 msgid "?\t\tMove to previous find hit"
 msgstr "?\t\tAller au résultat de recherche précédent"
 
-#: gitk:3078
+#: gitk:3097
 msgid "f\t\tScroll diff view to next file"
 msgstr "f\t\tAller au prochain fichier dans la vue des diff"
 
-#: gitk:3079
+#: gitk:3098
 #, tcl-format
 msgid "<%s-S>\t\tSearch for next hit in diff view"
 msgstr "<%s-S>\t\tAller au résultat suivant dans la vue des diff"
 
-#: gitk:3080
+#: gitk:3099
 #, tcl-format
 msgid "<%s-R>\t\tSearch for previous hit in diff view"
 msgstr "<%s-R>\t\tAller au résultat précédent dans la vue des diff"
 
-#: gitk:3081
+#: gitk:3100
 #, tcl-format
 msgid "<%s-KP+>\tIncrease font size"
 msgstr "<%s-KP+>\tAugmenter la taille de la police"
 
-#: gitk:3082
+#: gitk:3101
 #, tcl-format
 msgid "<%s-plus>\tIncrease font size"
 msgstr "<%s-plus>\tAugmenter la taille de la police"
 
-#: gitk:3083
+#: gitk:3102
 #, tcl-format
 msgid "<%s-KP->\tDecrease font size"
 msgstr "<%s-KP->\tDiminuer la taille de la police"
 
-#: gitk:3084
+#: gitk:3103
 #, tcl-format
 msgid "<%s-minus>\tDecrease font size"
 msgstr "<%s-minus>\tDiminuer la taille de la police"
 
-#: gitk:3085
+#: gitk:3104
 msgid "<F5>\t\tUpdate"
 msgstr "<F5>\t\tMise à jour"
 
-#: gitk:3550 gitk:3559
+#: gitk:3569 gitk:3578
 #, tcl-format
 msgid "Error creating temporary directory %s:"
 msgstr "Erreur lors de la création du répertoire temporaire %s :"
 
-#: gitk:3572
+#: gitk:3591
 #, tcl-format
 msgid "Error getting \"%s\" from %s:"
 msgstr "Erreur en obtenant \"%s\" de %s:"
 
-#: gitk:3635
+#: gitk:3654
 msgid "command failed:"
 msgstr "échec de la commande :"
 
-#: gitk:3784
+#: gitk:3803
 msgid "No such commit"
 msgstr "Commit inexistant"
 
-#: gitk:3798
+#: gitk:3817
 msgid "git gui blame: command failed:"
 msgstr "git gui blame : échec de la commande :"
 
-#: gitk:3829
+#: gitk:3848
 #, tcl-format
 msgid "Couldn't read merge head: %s"
 msgstr "Impossible de lire le head de la fusion : %s"
 
-#: gitk:3837
+#: gitk:3856
 #, tcl-format
 msgid "Error reading index: %s"
 msgstr "Erreur à la lecture de l'index : %s"
 
-#: gitk:3862
+#: gitk:3881
 #, tcl-format
 msgid "Couldn't start git blame: %s"
 msgstr "Impossible de démarrer git blame : %s"
 
-#: gitk:3865 gitk:6754
+#: gitk:3884 gitk:6773
 msgid "Searching"
 msgstr "Recherche en cours"
 
-#: gitk:3897
+#: gitk:3916
 #, tcl-format
 msgid "Error running git blame: %s"
 msgstr "Erreur à l'exécution de git blame : %s"
 
-#: gitk:3925
+#: gitk:3944
 #, tcl-format
 msgid "That line comes from commit %s,  which is not in this view"
 msgstr "Cette ligne est issue du commit %s, qui n'est pas dans cette vue"
 
-#: gitk:3939
+#: gitk:3958
 msgid "External diff viewer failed:"
-msgstr "Échec de l'outil externe de visualisation des diff"
+msgstr "Échec de l'outil externe de visualisation des diff :"
+
+#: gitk:4062
+msgid "All files"
+msgstr "Tous les fichiers"
 
-#: gitk:4070
+#: gitk:4086
+msgid "View"
+msgstr "Vue"
+
+#: gitk:4089
 msgid "Gitk view definition"
 msgstr "Définition des vues de Gitk"
 
-#: gitk:4074
+#: gitk:4093
 msgid "Remember this view"
 msgstr "Se souvenir de cette vue"
 
-#: gitk:4075
+#: gitk:4094
 msgid "References (space separated list):"
 msgstr "Références (liste d'éléments séparés par des espaces) :"
 
-#: gitk:4076
+#: gitk:4095
 msgid "Branches & tags:"
-msgstr "Branches & tags :"
+msgstr "Branches & étiquettes :"
 
-#: gitk:4077
+#: gitk:4096
 msgid "All refs"
 msgstr "Toutes les références"
 
-#: gitk:4078
+#: gitk:4097
 msgid "All (local) branches"
 msgstr "Toutes les branches (locales)"
 
-#: gitk:4079
+#: gitk:4098
 msgid "All tags"
-msgstr "Tous les tags"
+msgstr "Toutes les étiquettes"
 
-#: gitk:4080
+#: gitk:4099
 msgid "All remote-tracking branches"
 msgstr "Toutes les branches de suivi à distance"
 
-#: gitk:4081
+#: gitk:4100
 msgid "Commit Info (regular expressions):"
 msgstr "Info sur les commits (expressions régulières) :"
 
-#: gitk:4082
+#: gitk:4101
 msgid "Author:"
 msgstr "Auteur :"
 
-#: gitk:4083
+#: gitk:4102
 msgid "Committer:"
-msgstr "Commiteur :"
+msgstr "Validateur :"
 
-#: gitk:4084
+#: gitk:4103
 msgid "Commit Message:"
 msgstr "Message de commit :"
 
-#: gitk:4085
+#: gitk:4104
 msgid "Matches all Commit Info criteria"
 msgstr "Correspond à tous les critères d'Info sur les commits"
 
-#: gitk:4086
-#, fuzzy
+#: gitk:4105
 msgid "Matches no Commit Info criteria"
-msgstr "Correspond à tous les critères d'Info sur les commits"
+msgstr "Ne correspond à aucun des critères d'Info sur les commits"
 
-#: gitk:4087
+#: gitk:4106
 msgid "Changes to Files:"
 msgstr "Changements des fichiers :"
 
-#: gitk:4088
+#: gitk:4107
 msgid "Fixed String"
 msgstr "Chaîne Figée"
 
-#: gitk:4089
+#: gitk:4108
 msgid "Regular Expression"
 msgstr "Expression Régulière"
 
-#: gitk:4090
+#: gitk:4109
 msgid "Search string:"
 msgstr "Recherche de la chaîne :"
 
-#: gitk:4091
+#: gitk:4110
 msgid ""
 "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
 "15:27:38\"):"
@@ -706,204 +709,201 @@ msgstr ""
 "Dates des commits (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, "
 "2009 15:27:38\") :"
 
-#: gitk:4092
+#: gitk:4111
 msgid "Since:"
-msgstr "De :"
+msgstr "Depuis :"
 
-#: gitk:4093
+#: gitk:4112
 msgid "Until:"
 msgstr "Jusqu'au :"
 
-#: gitk:4094
+#: gitk:4113
 msgid "Limit and/or skip a number of revisions (positive integer):"
 msgstr "Limiter et/ou sauter un certain nombre (entier positif) de révisions :"
 
-#: gitk:4095
+#: gitk:4114
 msgid "Number to show:"
 msgstr "Nombre à afficher :"
 
-#: gitk:4096
+#: gitk:4115
 msgid "Number to skip:"
 msgstr "Nombre à sauter :"
 
-#: gitk:4097
+#: gitk:4116
 msgid "Miscellaneous options:"
 msgstr "Options diverses :"
 
-#: gitk:4098
+#: gitk:4117
 msgid "Strictly sort by date"
 msgstr "Trier par date"
 
-# FIXME : traduction de "branch sides"
-#: gitk:4099
-#, fuzzy
+#: gitk:4118
 msgid "Mark branch sides"
-msgstr "Marquer les extrémités des branches"
+msgstr "Indiquer les côtés des branches"
 
-#: gitk:4100
+#: gitk:4119
 msgid "Limit to first parent"
 msgstr "Limiter au premier ancêtre"
 
-#: gitk:4101
+#: gitk:4120
 msgid "Simple history"
 msgstr "Historique simple"
 
-#: gitk:4102
+#: gitk:4121
 msgid "Additional arguments to git log:"
 msgstr "Arguments supplémentaires de git log :"
 
-#: gitk:4103
+#: gitk:4122
 msgid "Enter files and directories to include, one per line:"
 msgstr "Saisir les fichiers et répertoires à inclure, un par ligne :"
 
-#: gitk:4104
+#: gitk:4123
 msgid "Command to generate more commits to include:"
 msgstr "Commande pour générer plus de commits à inclure :"
 
-#: gitk:4228
+#: gitk:4247
 msgid "Gitk: edit view"
 msgstr "Gitk : éditer la vue"
 
-#: gitk:4236
+#: gitk:4255
 msgid "-- criteria for selecting revisions"
 msgstr "-- critère pour la sélection des révisions"
 
-#: gitk:4241
-#, fuzzy
+#: gitk:4260
 msgid "View Name"
-msgstr "Nom de la vue :"
+msgstr "Nom de la vue"
 
-#: gitk:4316
+#: gitk:4335
 msgid "Apply (F5)"
 msgstr "Appliquer (F5)"
 
-#: gitk:4354
+#: gitk:4373
 msgid "Error in commit selection arguments:"
 msgstr "Erreur dans les arguments de sélection des commits :"
 
-#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374
+#: gitk:4428 gitk:4481 gitk:4943 gitk:4957 gitk:6227 gitk:12410 gitk:12411
 msgid "None"
 msgstr "Aucun"
 
-#: gitk:5021 gitk:5026
+#: gitk:5040 gitk:5045
 msgid "Descendant"
 msgstr "Descendant"
 
-#: gitk:5022
+#: gitk:5041
 msgid "Not descendant"
 msgstr "Pas un descendant"
 
-#: gitk:5029 gitk:5034
+#: gitk:5048 gitk:5053
 msgid "Ancestor"
 msgstr "Ancêtre"
 
-#: gitk:5030
+#: gitk:5049
 msgid "Not ancestor"
 msgstr "Pas un ancêtre"
 
-#: gitk:5324
+#: gitk:5343
 msgid "Local changes checked in to index but not committed"
-msgstr "Modifications locales enregistrées dans l'index mais non commitées"
+msgstr "Modifications locales enregistrées dans l'index mais non validées"
 
-#: gitk:5360
+#: gitk:5379
 msgid "Local uncommitted changes, not checked in to index"
-msgstr "Modifications locales non enregistrées dans l'index et non commitées"
+msgstr "Modifications locales non enregistrées dans l'index et non validées"
 
-#: gitk:7134
+#: gitk:7153
 msgid "and many more"
-msgstr ""
+msgstr "et beaucoup plus"
 
-#: gitk:7137
+#: gitk:7156
 msgid "many"
 msgstr "nombreux"
 
-#: gitk:7328
+#: gitk:7347
 msgid "Tags:"
-msgstr "Tags :"
+msgstr "Étiquettes :"
 
-#: gitk:7345 gitk:7351 gitk:8825
+#: gitk:7364 gitk:7370 gitk:8844
 msgid "Parent"
 msgstr "Parent"
 
-#: gitk:7356
+#: gitk:7375
 msgid "Child"
 msgstr "Enfant"
 
-#: gitk:7365
+#: gitk:7384
 msgid "Branch"
 msgstr "Branche"
 
-#: gitk:7368
+#: gitk:7387
 msgid "Follows"
 msgstr "Suit"
 
-#: gitk:7371
+#: gitk:7390
 msgid "Precedes"
 msgstr "Précède"
 
-#: gitk:7966
+#: gitk:7985
 #, tcl-format
 msgid "Error getting diffs: %s"
 msgstr "Erreur lors de la récupération des diff : %s"
 
-#: gitk:8650
+#: gitk:8669
 msgid "Goto:"
 msgstr "Aller à :"
 
-#: gitk:8671
+#: gitk:8690
 #, tcl-format
 msgid "Short SHA1 id %s is ambiguous"
-msgstr "Id SHA1 court %s est ambigu"
+msgstr "L'id SHA1 court %s est ambigu"
 
-#: gitk:8678
+#: gitk:8697
 #, tcl-format
 msgid "Revision %s is not known"
-msgstr "Id SHA1 %s est inconnu"
+msgstr "La révision %s est inconnu"
 
-#: gitk:8688
+#: gitk:8707
 #, tcl-format
 msgid "SHA1 id %s is not known"
-msgstr "Id SHA1 %s est inconnu"
+msgstr "L'id SHA1 %s est inconnu"
 
-#: gitk:8690
+#: gitk:8709
 #, tcl-format
 msgid "Revision %s is not in the current view"
 msgstr "La révision %s n'est pas dans la vue courante"
 
-#: gitk:8832 gitk:8847
+#: gitk:8851 gitk:8866
 msgid "Date"
 msgstr "Date"
 
-#: gitk:8835
+#: gitk:8854
 msgid "Children"
 msgstr "Enfants"
 
-#: gitk:8898
+#: gitk:8917
 #, tcl-format
 msgid "Reset %s branch to here"
 msgstr "Réinitialiser la branche %s vers cet état"
 
-#: gitk:8900
+#: gitk:8919
 msgid "Detached head: can't reset"
 msgstr "Head détaché : impossible de réinitialiser"
 
-#: gitk:9005 gitk:9011
+#: gitk:9024 gitk:9030
 msgid "Skipping merge commit "
 msgstr "Éviter le commit de la fusion "
 
-#: gitk:9020 gitk:9025
+#: gitk:9039 gitk:9044
 msgid "Error getting patch ID for "
 msgstr "Erreur à l'obtention de l'ID du patch pour "
 
-#: gitk:9021 gitk:9026
+#: gitk:9040 gitk:9045
 msgid " - stopping\n"
 msgstr " - arrêt en cours\n"
 
-#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065
+#: gitk:9050 gitk:9053 gitk:9061 gitk:9075 gitk:9084
 msgid "Commit "
 msgstr "Commit "
 
-#: gitk:9035
+#: gitk:9054
 msgid ""
 " is the same patch as\n"
 "       "
@@ -911,7 +911,7 @@ msgstr ""
 "est le même patch que \n"
 "       "
 
-#: gitk:9043
+#: gitk:9062
 msgid ""
 " differs from\n"
 "       "
@@ -919,240 +919,226 @@ msgstr ""
 " diffère de\n"
 "       "
 
-#: gitk:9045
+#: gitk:9064
 msgid ""
 "Diff of commits:\n"
 "\n"
-msgstr ""
+msgstr "Diff des commits :\n\n"
 
-#: gitk:9057 gitk:9066
+#: gitk:9076 gitk:9085
 #, tcl-format
 msgid " has %s children - stopping\n"
-msgstr "a %s enfants - arrêt en cours\n"
+msgstr " a %s enfants - arrêt en cours\n"
 
-#: gitk:9085
-#, fuzzy, tcl-format
+#: gitk:9104
+#, tcl-format
 msgid "Error writing commit to file: %s"
-msgstr "Erreur à l'ecriture du commit :"
+msgstr "Erreur à l'écriture du commit dans le fichier : %s"
 
-#: gitk:9091
-#, fuzzy, tcl-format
+#: gitk:9110
+#, tcl-format
 msgid "Error diffing commits: %s"
-msgstr "Erreur à l'ecriture du commit :"
+msgstr "Erreur à la différence des commits : %s"
 
-#: gitk:9137
+#: gitk:9156
 msgid "Top"
 msgstr "Haut"
 
-#: gitk:9138
+#: gitk:9157
 msgid "From"
 msgstr "De"
 
-#: gitk:9143
+#: gitk:9162
 msgid "To"
 msgstr "À"
 
-#: gitk:9167
+#: gitk:9186
 msgid "Generate patch"
 msgstr "Générer le patch"
 
-#: gitk:9169
+#: gitk:9188
 msgid "From:"
 msgstr "De :"
 
-#: gitk:9178
+#: gitk:9197
 msgid "To:"
 msgstr "À :"
 
-#: gitk:9187
+#: gitk:9206
 msgid "Reverse"
 msgstr "Inverser"
 
-#: gitk:9189 gitk:9385
+#: gitk:9208 gitk:9418
 msgid "Output file:"
 msgstr "Fichier de sortie :"
 
-#: gitk:9195
+#: gitk:9214
 msgid "Generate"
 msgstr "Générer"
 
-#: gitk:9233
+#: gitk:9252
 msgid "Error creating patch:"
 msgstr "Erreur à la création du patch :"
 
-#: gitk:9256 gitk:9373 gitk:9430
+#: gitk:9275 gitk:9406 gitk:9463
 msgid "ID:"
 msgstr "ID :"
 
-#: gitk:9265
+#: gitk:9284
 msgid "Tag name:"
-msgstr "Nom du Tag :"
+msgstr "Nom de l'étiquette :"
 
-#: gitk:9268
+#: gitk:9287
 msgid "Tag message is optional"
-msgstr ""
+msgstr "Le message d'étiquette est optionnel"
 
-#: gitk:9270
-#, fuzzy
+#: gitk:9289
 msgid "Tag message:"
-msgstr "Nom du Tag :"
+msgstr "Message d'étiquette :"
 
-#: gitk:9274 gitk:9439
+#: gitk:9293 gitk:9472
 msgid "Create"
 msgstr "Créer"
 
-#: gitk:9292
+#: gitk:9311
 msgid "No tag name specified"
-msgstr "Aucun nom de tag spécifié"
+msgstr "Aucun nom d'étiquette spécifié"
 
-#: gitk:9296
+#: gitk:9315
 #, tcl-format
 msgid "Tag \"%s\" already exists"
-msgstr "Le tag \"%s\" existe déjà"
+msgstr "L'étiquette \"%s\" existe déjà"
 
-#: gitk:9306
+#: gitk:9325
 msgid "Error creating tag:"
-msgstr "Erreur à la création du tag :"
+msgstr "Erreur à la création de l'étiquette :"
 
-#: gitk:9382
+#: gitk:9415
 msgid "Command:"
 msgstr "Commande :"
 
-#: gitk:9390
+#: gitk:9423
 msgid "Write"
 msgstr "Écrire"
 
-#: gitk:9408
+#: gitk:9441
 msgid "Error writing commit:"
 msgstr "Erreur à l'ecriture du commit :"
 
-#: gitk:9435
+#: gitk:9468
 msgid "Name:"
 msgstr "Nom :"
 
-#: gitk:9458
+#: gitk:9491
 msgid "Please specify a name for the new branch"
 msgstr "Veuillez spécifier un nom pour la nouvelle branche"
 
-#: gitk:9463
+#: gitk:9496
 #, tcl-format
 msgid "Branch '%s' already exists. Overwrite?"
 msgstr "La branche '%s' existe déjà. Écraser?"
 
-#: gitk:9530
+#: gitk:9563
 #, tcl-format
 msgid "Commit %s is already included in branch %s -- really re-apply it?"
 msgstr ""
 "Le Commit %s est déjà inclus dans la branche %s -- le ré-appliquer malgré "
 "tout?"
 
-#: gitk:9535
+#: gitk:9568
 msgid "Cherry-picking"
-msgstr "Cueillir (Cherry-picking)"
+msgstr "Picorer (Cherry-picking)"
 
-#: gitk:9544
+#: gitk:9577
 #, tcl-format
 msgid ""
 "Cherry-pick failed because of local changes to file '%s'.\n"
 "Please commit, reset or stash your changes and try again."
 msgstr ""
-"La cueillette (cherry-pick) a échouée à cause de modifications locales du "
-"fichier '%s'.\n"
-"Veuillez commiter, réinitialiser ou stasher vos changements et essayer de "
-"nouveau."
+"Le picorage (cherry-pick) a échouée à cause de modifications locales du fichier '%s'.\n"
+"Veuillez commiter, réinitialiser ou stasher vos changements et essayer de nouveau."
 
-#: gitk:9550
+#: gitk:9583
 msgid ""
 "Cherry-pick failed because of merge conflict.\n"
 "Do you wish to run git citool to resolve it?"
 msgstr ""
-"La cueillette (cherry-pick) a échouée à cause d'un conflit lors d'une "
-"fusion.\n"
+"Le picorage (cherry-pick) a échouée à cause d'un conflit lors d'une fusion.\n"
 "Souhaitez-vous exécuter git citool pour le résoudre ?"
 
-#: gitk:9566 gitk:9624
+#: gitk:9599 gitk:9657
 msgid "No changes committed"
-msgstr "Aucun changement commité"
+msgstr "Aucune modification validée"
 
-#: gitk:9593
-#, fuzzy, tcl-format
+#: gitk:9626
+#, tcl-format
 msgid "Commit %s is not included in branch %s -- really revert it?"
-msgstr ""
-"Le Commit %s est déjà inclus dans la branche %s -- le ré-appliquer malgré "
-"tout?"
+msgstr "Le Commit %s n'est pas inclus dans la branche %s -- le défaire malgré tout?"
 
-#: gitk:9598
-#, fuzzy
+#: gitk:9631
 msgid "Reverting"
-msgstr "Réinitialisation"
+msgstr "Commit défait"
 
-#: gitk:9606
-#, fuzzy, tcl-format
+#: gitk:9639
+#, tcl-format
 msgid ""
 "Revert failed because of local changes to the following files:%s Please "
 "commit, reset or stash  your changes and try again."
-msgstr ""
-"La cueillette (cherry-pick) a échouée à cause de modifications locales du "
-"fichier '%s'.\n"
-"Veuillez commiter, réinitialiser ou stasher vos changements et essayer de "
-"nouveau."
+msgstr "Échec en tentant de défaire le commit à cause de modifications locales des fichiers : %s. Veuillez valider, réinitialiser ou remiser vos modifications et essayer de nouveau."
 
-#: gitk:9610
-#, fuzzy
+#: gitk:9643
 msgid ""
 "Revert failed because of merge conflict.\n"
 " Do you wish to run git citool to resolve it?"
 msgstr ""
-"La cueillette (cherry-pick) a échouée à cause d'un conflit lors d'une "
-"fusion.\n"
+"Échec en tentant de défaire à cause d'un conflit de fusion.\n"
 "Souhaitez-vous exécuter git citool pour le résoudre ?"
 
-#: gitk:9653
+#: gitk:9686
 msgid "Confirm reset"
 msgstr "Confirmer la réinitialisation"
 
-#: gitk:9655
+#: gitk:9688
 #, tcl-format
 msgid "Reset branch %s to %s?"
 msgstr "Réinitialiser la branche %s à %s?"
 
-#: gitk:9657
+#: gitk:9690
 msgid "Reset type:"
 msgstr "Type de réinitialisation :"
 
-#: gitk:9660
+#: gitk:9693
 msgid "Soft: Leave working tree and index untouched"
 msgstr "Douce : Laisse le répertoire de travail et l'index intacts"
 
-#: gitk:9663
+#: gitk:9696
 msgid "Mixed: Leave working tree untouched, reset index"
 msgstr ""
 "Hybride : Laisse le répertoire de travail dans son état courant, "
 "réinitialise l'index"
 
-#: gitk:9666
+#: gitk:9699
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
 msgstr ""
 "Dure : Réinitialise le répertoire de travail et l'index\n"
-"(abandonne TOUS les changements locaux)"
+"(abandonne TOUTES les modifications locale)"
 
-#: gitk:9683
+#: gitk:9716
 msgid "Resetting"
 msgstr "Réinitialisation"
 
 # Fixme: Récupération est-il vraiment une mauvaise traduction?
-#: gitk:9743
-#, fuzzy
+#: gitk:9776
 msgid "Checking out"
-msgstr "Récupération"
+msgstr "Extraction"
 
-#: gitk:9796
+#: gitk:9829
 msgid "Cannot delete the currently checked-out branch"
-msgstr "Impossible de supprimer la branche en cours"
+msgstr "Impossible de supprimer la branche extraite"
 
-#: gitk:9802
+#: gitk:9835
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
@@ -1161,16 +1147,16 @@ msgstr ""
 "Les commits de la branche %s ne sont dans aucune autre branche.\n"
 "Voulez-vous vraiment supprimer cette branche %s ?"
 
-#: gitk:9833
+#: gitk:9866
 #, tcl-format
 msgid "Tags and heads: %s"
-msgstr "Tags et heads : %s"
+msgstr "Étiquettes et heads : %s"
 
-#: gitk:9850
+#: gitk:9883
 msgid "Filter"
 msgstr "Filtrer"
 
-#: gitk:10146
+#: gitk:10179
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
@@ -1179,207 +1165,202 @@ msgstr ""
 "informations sur les branches et les tags précédents/suivants seront "
 "incomplètes."
 
-#: gitk:11123
+#: gitk:11156
 msgid "Tag"
-msgstr "Tag"
+msgstr "Étiquette"
 
-#: gitk:11127
+#: gitk:11160
 msgid "Id"
 msgstr "Id"
 
-#: gitk:11210
+#: gitk:11243
 msgid "Gitk font chooser"
 msgstr "Sélecteur de police de Gitk"
 
-#: gitk:11227
+#: gitk:11260
 msgid "B"
 msgstr "B"
 
-#: gitk:11230
+#: gitk:11263
 msgid "I"
 msgstr "I"
 
-#: gitk:11348
+#: gitk:11381
 msgid "Commit list display options"
 msgstr "Options d'affichage de la liste des commits"
 
-#: gitk:11351
+#: gitk:11384
 msgid "Maximum graph width (lines)"
 msgstr "Longueur maximum du graphe (lignes)"
 
 # FIXME : Traduction standard de "pane"?
-#: gitk:11355
-#, fuzzy, no-tcl-format
+#: gitk:11388
+#, no-tcl-format
 msgid "Maximum graph width (% of pane)"
-msgstr "Longueur maximum du graphe (% du panneau)"
+msgstr "Largeur maximum du graphe (% du panneau)"
 
-#: gitk:11358
+#: gitk:11391
 msgid "Show local changes"
-msgstr "Montrer les changements locaux"
+msgstr "Montrer les modifications locales"
 
-#: gitk:11361
-#, fuzzy
+#: gitk:11394
 msgid "Auto-select SHA1 (length)"
-msgstr "Sélection auto. du SHA1"
+msgstr "Sélection auto. du SHA1 (longueur)"
 
-#: gitk:11365
+#: gitk:11398
 msgid "Hide remote refs"
 msgstr "Cacher les refs distantes"
 
-#: gitk:11369
+#: gitk:11402
 msgid "Diff display options"
 msgstr "Options d'affichage des diff"
 
-#: gitk:11371
+#: gitk:11404
 msgid "Tab spacing"
 msgstr "Taille des tabulations"
 
-#: gitk:11374
-#, fuzzy
+#: gitk:11407
 msgid "Display nearby tags/heads"
 msgstr "Afficher les tags les plus proches"
 
-#: gitk:11377
+#: gitk:11410
 msgid "Maximum # tags/heads to show"
-msgstr ""
+msgstr "Nombre maximum d'étiquettes/heads à afficher"
 
-#: gitk:11380
+#: gitk:11413
 msgid "Limit diffs to listed paths"
 msgstr "Limiter les différences aux chemins listés"
 
-#: gitk:11383
+#: gitk:11416
 msgid "Support per-file encodings"
 msgstr "Support pour un encodage des caractères par fichier"
 
-#: gitk:11389 gitk:11536
+#: gitk:11422 gitk:11569
 msgid "External diff tool"
 msgstr "Outil diff externe"
 
-#: gitk:11390
+#: gitk:11423
 msgid "Choose..."
 msgstr "Choisir..."
 
-#: gitk:11395
-#, fuzzy
+#: gitk:11428
 msgid "General options"
-msgstr "Générer le patch"
+msgstr "Options générales"
 
-#: gitk:11398
+#: gitk:11431
 msgid "Use themed widgets"
-msgstr ""
+msgstr "Utiliser des widgets en thème"
 
-#: gitk:11400
+#: gitk:11433
 msgid "(change requires restart)"
-msgstr ""
+msgstr "(la modification nécessite un redémarrage)"
 
-#: gitk:11402
+#: gitk:11435
 msgid "(currently unavailable)"
-msgstr ""
+msgstr "(non disponible actuellement)"
 
-#: gitk:11413
+#: gitk:11446
 msgid "Colors: press to choose"
 msgstr "Couleurs : cliquer pour choisir"
 
-#: gitk:11416
+#: gitk:11449
 msgid "Interface"
-msgstr ""
+msgstr "Interface"
 
-#: gitk:11417
-#, fuzzy
+#: gitk:11450
 msgid "interface"
-msgstr "Police de l'interface utilisateur"
+msgstr "interface"
 
-#: gitk:11420
+#: gitk:11453
 msgid "Background"
 msgstr "Arrière-plan"
 
-#: gitk:11421 gitk:11451
+#: gitk:11454 gitk:11484
 msgid "background"
 msgstr "arrière-plan"
 
-#: gitk:11424
+#: gitk:11457
 msgid "Foreground"
 msgstr "Premier plan"
 
-#: gitk:11425
+#: gitk:11458
 msgid "foreground"
 msgstr "premier plan"
 
-#: gitk:11428
+#: gitk:11461
 msgid "Diff: old lines"
 msgstr "Diff : anciennes lignes"
 
-#: gitk:11429
+#: gitk:11462
 msgid "diff old lines"
 msgstr "diff anciennes lignes"
 
-#: gitk:11433
+#: gitk:11466
 msgid "Diff: new lines"
 msgstr "Diff : nouvelles lignes"
 
-#: gitk:11434
+#: gitk:11467
 msgid "diff new lines"
 msgstr "diff nouvelles lignes"
 
-#: gitk:11438
+#: gitk:11471
 msgid "Diff: hunk header"
 msgstr "Diff : entête du hunk"
 
-#: gitk:11440
+#: gitk:11473
 msgid "diff hunk header"
 msgstr "diff : entête du hunk"
 
-#: gitk:11444
+#: gitk:11477
 msgid "Marked line bg"
-msgstr "Arrière-plan de la ligne marquée"
+msgstr "Fond de la ligne marquée"
 
-#: gitk:11446
+#: gitk:11479
 msgid "marked line background"
-msgstr "Arrière-plan de la ligne marquée"
+msgstr "Fond de la ligne marquée"
 
-#: gitk:11450
+#: gitk:11483
 msgid "Select bg"
-msgstr "Sélectionner l'arrière-plan"
+msgstr "Sélectionner le fond"
 
-#: gitk:11459
+#: gitk:11492
 msgid "Fonts: press to choose"
 msgstr "Polices : cliquer pour choisir"
 
-#: gitk:11461
+#: gitk:11494
 msgid "Main font"
 msgstr "Police principale"
 
-#: gitk:11462
+#: gitk:11495
 msgid "Diff display font"
 msgstr "Police d'affichage des diff"
 
-#: gitk:11463
+#: gitk:11496
 msgid "User interface font"
 msgstr "Police de l'interface utilisateur"
 
-#: gitk:11485
+#: gitk:11518
 msgid "Gitk preferences"
 msgstr "Préférences de Gitk"
 
-#: gitk:11494
-#, fuzzy
+#: gitk:11527
 msgid "General"
-msgstr "Générer"
+msgstr "Général"
 
-#: gitk:11495
+#: gitk:11528
 msgid "Colors"
-msgstr ""
+msgstr "Couleurs"
 
-#: gitk:11496
+#: gitk:11529
 msgid "Fonts"
-msgstr ""
+msgstr "Polices"
 
-#: gitk:11546
+#: gitk:11579
 #, tcl-format
 msgid "Gitk: choose color for %s"
 msgstr "Gitk : choisir la couleur de %s"
 
-#: gitk:12059
+#: gitk:12092
 msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
@@ -1387,16 +1368,16 @@ msgstr ""
 "Désolé, gitk ne peut être exécuté avec cette version de Tcl/Tk.\n"
 " Gitk requiert Tcl/Tk version 8.4 ou supérieur."
 
-#: gitk:12269
+#: gitk:12302
 msgid "Cannot find a git repository here."
 msgstr "Impossible de trouver un dépôt git ici."
 
-#: gitk:12316
+#: gitk:12349
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
 msgstr "Argument '%s' ambigu : à la fois une révision et un nom de fichier"
 
-#: gitk:12328
+#: gitk:12361
 msgid "Bad arguments to gitk:"
 msgstr "Arguments invalides pour gitk :"
 
index c95f5d76cae9fc40a1c1d2e6cff899e81186b6ca..a0a8d1762150acd5b6a91116d4835fba1834d425 100644 (file)
@@ -8,19 +8,23 @@ sub new {
        $re =~ s!/+$!!g; # no need for trailing slashes
        my (@left, @right, @patterns);
        my $state = "left";
-       my $die_msg = "Only one set of wildcard directories " .
-                               "(e.g. '*' or '*/*/*') is supported: '$glob'\n";
+       my $die_msg = "Only one set of wildcards " .
+                               "(e.g. '*' or '*/*/*') is supported: $glob\n";
        for my $part (split(m|/|, $glob)) {
-               if ($part =~ /\*/ && $part ne "*") {
-                       die "Invalid pattern in '$glob': $part\n";
-               } elsif ($pattern_ok && $part =~ /[{}]/ &&
+               if ($pattern_ok && $part =~ /[{}]/ &&
                         $part !~ /^\{[^{}]+\}/) {
                        die "Invalid pattern in '$glob': $part\n";
                }
-               if ($part eq "*") {
+               my $nstars = $part =~ tr/*//;
+               if ($nstars > 1) {
+                       die "Only one '*' is allowed in a pattern: '$part'\n";
+               }
+               if ($part =~ /(.*)\*(.*)/) {
                        die $die_msg if $state eq "right";
+                       my ($l, $r) = ($1, $2);
                        $state = "pattern";
-                       push(@patterns, "[^/]*");
+                       my $pat = quotemeta($l) . '[^/]*' . quotemeta($r);
+                       push(@patterns, $pat);
                } elsif ($pattern_ok && $part =~ /^\{(.*)\}$/) {
                        die $die_msg if $state eq "right";
                        $state = "pattern";
index d043078da526275c3b1505297f5300cf1ad26a22..3fc484e8c3f8d910f02e409baf7bf1d5682b4f2f 100755 (executable)
@@ -175,10 +175,13 @@ test_expect_success 'negated exclude matches can override previous ones' '
        grep "^a.1" output
 '
 
-test_expect_success 'excluded directory does not override content patterns' '
+test_expect_success 'excluded directory overrides content patterns' '
 
        git ls-files --others --exclude="one" --exclude="!one/a.1" >output &&
-       grep "^one/a.1" output
+       if grep "^one/a.1" output
+       then
+               false
+       fi
 '
 
 test_expect_success 'negated directory doesn'\''t affect content patterns' '
diff --git a/t/t3007-ls-files-other-negative.sh b/t/t3007-ls-files-other-negative.sh
deleted file mode 100755 (executable)
index 0797b86..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/bin/sh
-
-test_description='test re-include patterns'
-
-. ./test-lib.sh
-
-test_expect_success 'setup' '
-       mkdir -p fooo foo/bar tmp &&
-       touch abc foo/def foo/bar/ghi foo/bar/bar
-'
-
-test_expect_success 'no match, do not enter subdir and waste cycles' '
-       cat >.gitignore <<-\EOF &&
-       /tmp
-       /foo
-       !fooo/bar/bar
-       EOF
-       GIT_TRACE_EXCLUDE="$(pwd)/tmp/trace" git ls-files -o --exclude-standard >tmp/actual &&
-       ! grep "enter .foo/.\$" tmp/trace &&
-       cat >tmp/expected <<-\EOF &&
-       .gitignore
-       abc
-       EOF
-       test_cmp tmp/expected tmp/actual
-'
-
-test_expect_success 'match, excluded by literal pathname pattern' '
-       cat >.gitignore <<-\EOF &&
-       /tmp
-       /fooo
-       /foo
-       !foo/bar/bar
-       EOF
-       cat >fooo/.gitignore <<-\EOF &&
-       !/*
-       EOF     git ls-files -o --exclude-standard >tmp/actual &&
-       cat >tmp/expected <<-\EOF &&
-       .gitignore
-       abc
-       foo/bar/bar
-       EOF
-       test_cmp tmp/expected tmp/actual
-'
-
-test_expect_success 'match, excluded by wildcard pathname pattern' '
-       cat >.gitignore <<-\EOF &&
-       /tmp
-       /fooo
-       /fo?
-       !foo/bar/bar
-       EOF
-       git ls-files -o --exclude-standard >tmp/actual &&
-       cat >tmp/expected <<-\EOF &&
-       .gitignore
-       abc
-       foo/bar/bar
-       EOF
-       test_cmp tmp/expected tmp/actual
-'
-
-test_expect_success 'match, excluded by literal basename pattern' '
-       cat >.gitignore <<-\EOF &&
-       /tmp
-       /fooo
-       foo
-       !foo/bar/bar
-       EOF
-       git ls-files -o --exclude-standard >tmp/actual &&
-       cat >tmp/expected <<-\EOF &&
-       .gitignore
-       abc
-       foo/bar/bar
-       EOF
-       test_cmp tmp/expected tmp/actual
-'
-
-test_expect_success 'match, excluded by wildcard basename pattern' '
-       cat >.gitignore <<-\EOF &&
-       /tmp
-       /fooo
-       fo?
-       !foo/bar/bar
-       EOF
-       git ls-files -o --exclude-standard >tmp/actual &&
-       cat >tmp/expected <<-\EOF &&
-       .gitignore
-       abc
-       foo/bar/bar
-       EOF
-       test_cmp tmp/expected tmp/actual
-'
-
-test_expect_success 'match, excluded by literal mustbedir, basename pattern' '
-       cat >.gitignore <<-\EOF &&
-       /tmp
-       /fooo
-       foo/
-       !foo/bar/bar
-       EOF
-       git ls-files -o --exclude-standard >tmp/actual &&
-       cat >tmp/expected <<-\EOF &&
-       .gitignore
-       abc
-       foo/bar/bar
-       EOF
-       test_cmp tmp/expected tmp/actual
-'
-
-test_expect_success 'match, excluded by literal mustbedir, pathname pattern' '
-       cat >.gitignore <<-\EOF &&
-       /tmp
-       /fooo
-       /foo/
-       !foo/bar/bar
-       EOF
-       git ls-files -o --exclude-standard >tmp/actual &&
-       cat >tmp/expected <<-\EOF &&
-       .gitignore
-       abc
-       foo/bar/bar
-       EOF
-       test_cmp tmp/expected tmp/actual
-'
-
-test_expect_success 'prepare for nested negatives' '
-       cat >.git/info/exclude <<-\EOF &&
-       /.gitignore
-       /tmp
-       /foo
-       /abc
-       EOF
-       git ls-files -o --exclude-standard >tmp/actual &&
-       test_must_be_empty tmp/actual &&
-       mkdir -p 1/2/3/4 &&
-       touch 1/f 1/2/f 1/2/3/f 1/2/3/4/f
-'
-
-test_expect_success 'match, literal pathname, nested negatives' '
-       cat >.gitignore <<-\EOF &&
-       /1
-       !1/2
-       1/2/3
-       !1/2/3/4
-       EOF
-       git ls-files -o --exclude-standard >tmp/actual &&
-       cat >tmp/expected <<-\EOF &&
-       1/2/3/4/f
-       1/2/f
-       EOF
-       test_cmp tmp/expected tmp/actual
-'
-
-test_done
index a526d603793957f781002c98b2da60e1005bf39f..a94286c8ec89823805989f4363072417e9c20165 100755 (executable)
@@ -86,9 +86,12 @@ test_expect_success 'test left-hand-side only globbing' '
        test_cmp expect.two output.two
        '
 
-echo "Only one set of wildcard directories" \
-     "(e.g. '*' or '*/*/*') is supported: 'branches/*/t/*'" > expect.three
-echo "" >> expect.three
+test_expect_success 'prepare test disallow multi-globs' "
+cat >expect.three <<EOF
+Only one set of wildcards (e.g. '*' or '*/*/*') is supported: branches/*/t/*
+
+EOF
+       "
 
 test_expect_success 'test disallow multi-globs' '
        git config --add svn-remote.three.url "$svnrepo" &&
index f36b74924236ff54bc6400ff8afacdf95def363d..8d99e848d47634ea340885fde48bc798a2c0b7a2 100755 (executable)
@@ -135,9 +135,12 @@ test_expect_success 'test another branch' '
        test_cmp expect.four output.four
        '
 
-echo "Only one set of wildcard directories" \
-     "(e.g. '*' or '*/*/*') is supported: 'branches/*/t/*'" > expect.three
-echo "" >> expect.three
+test_expect_success 'prepare test disallow multiple globs' "
+cat >expect.three <<EOF
+Only one set of wildcards (e.g. '*' or '*/*/*') is supported: branches/*/t/*
+
+EOF
+       "
 
 test_expect_success 'test disallow multiple globs' '
        git config --add svn-remote.three.url "$svnrepo" &&
index a66f43c6b1a2d9194f87a17e1758f24018cf8b1b..69a675052e2099f278c98ddf8bba12658741fba4 100755 (executable)
@@ -119,4 +119,10 @@ test_expect_success 'clone with -s/-T/-b/-t and --prefix "" still works' '
        rm -f warning
        '
 
+test_expect_success 'init with -T as a full url works' '
+       test ! -d project &&
+       git svn init -T "$svnrepo"/project/trunk project &&
+       rm -rf project
+       '
+
 test_done
diff --git a/t/t9168-git-svn-partially-globbed-names.sh b/t/t9168-git-svn-partially-globbed-names.sh
new file mode 100755 (executable)
index 0000000..8b22f22
--- /dev/null
@@ -0,0 +1,223 @@
+#!/bin/sh
+test_description='git svn globbing refspecs with prefixed globs'
+. ./lib-git-svn.sh
+
+test_expect_success 'prepare test refspec prefixed globbing' '
+       cat >expect.end <<EOF
+the end
+hi
+start a new branch
+initial
+EOF
+       '
+
+test_expect_success 'test refspec prefixed globbing' '
+       mkdir -p trunk/src/a trunk/src/b trunk/doc &&
+       echo "hello world" >trunk/src/a/readme &&
+       echo "goodbye world" >trunk/src/b/readme &&
+       svn_cmd import -m "initial" trunk "$svnrepo"/trunk &&
+       svn_cmd co "$svnrepo" tmp &&
+       (
+               cd tmp &&
+               mkdir branches tags &&
+               svn_cmd add branches tags &&
+               svn_cmd cp trunk branches/b_start &&
+               svn_cmd commit -m "start a new branch" &&
+               svn_cmd up &&
+               echo "hi" >>branches/b_start/src/b/readme &&
+               poke branches/b_start/src/b/readme &&
+               echo "hey" >>branches/b_start/src/a/readme &&
+               poke branches/b_start/src/a/readme &&
+               svn_cmd commit -m "hi" &&
+               svn_cmd up &&
+               svn_cmd cp branches/b_start tags/t_end &&
+               echo "bye" >>tags/t_end/src/b/readme &&
+               poke tags/t_end/src/b/readme &&
+               echo "aye" >>tags/t_end/src/a/readme &&
+               poke tags/t_end/src/a/readme &&
+               svn_cmd commit -m "the end" &&
+               echo "byebye" >>tags/t_end/src/b/readme &&
+               poke tags/t_end/src/b/readme &&
+               svn_cmd commit -m "nothing to see here"
+       ) &&
+       git config --add svn-remote.svn.url "$svnrepo" &&
+       git config --add svn-remote.svn.fetch \
+                        "trunk/src/a:refs/remotes/trunk" &&
+       git config --add svn-remote.svn.branches \
+                        "branches/b_*/src/a:refs/remotes/branches/b_*" &&
+       git config --add svn-remote.svn.tags\
+                        "tags/t_*/src/a:refs/remotes/tags/t_*" &&
+       git svn multi-fetch &&
+       git log --pretty=oneline refs/remotes/tags/t_end | \
+           sed -e "s/^.\{41\}//" >output.end &&
+       test_cmp expect.end output.end &&
+       test "$(git rev-parse refs/remotes/tags/t_end~1)" = \
+               "$(git rev-parse refs/remotes/branches/b_start)" &&
+       test "$(git rev-parse refs/remotes/branches/b_start~2)" = \
+               "$(git rev-parse refs/remotes/trunk)" &&
+       test_must_fail git rev-parse refs/remotes/tags/t_end@3
+       '
+
+test_expect_success 'prepare test left-hand-side only prefixed globbing' '
+       echo try to try >expect.two &&
+       echo nothing to see here >>expect.two &&
+       cat expect.end >>expect.two
+       '
+
+test_expect_success 'test left-hand-side only prefixed globbing' '
+       git config --add svn-remote.two.url "$svnrepo" &&
+       git config --add svn-remote.two.fetch trunk:refs/remotes/two/trunk &&
+       git config --add svn-remote.two.branches \
+                        "branches/b_*:refs/remotes/two/branches/*" &&
+       git config --add svn-remote.two.tags \
+                        "tags/t_*:refs/remotes/two/tags/*" &&
+       (
+               cd tmp &&
+               echo "try try" >>tags/t_end/src/b/readme &&
+               poke tags/t_end/src/b/readme &&
+               svn_cmd commit -m "try to try"
+       ) &&
+       git svn fetch two &&
+       test $(git rev-list refs/remotes/two/tags/t_end | wc -l) -eq 6 &&
+       test $(git rev-list refs/remotes/two/branches/b_start | wc -l) -eq 3 &&
+       test $(git rev-parse refs/remotes/two/branches/b_start~2) = \
+            $(git rev-parse refs/remotes/two/trunk) &&
+       test $(git rev-parse refs/remotes/two/tags/t_end~3) = \
+            $(git rev-parse refs/remotes/two/branches/b_start) &&
+       git log --pretty=oneline refs/remotes/two/tags/t_end | \
+           sed -e "s/^.\{41\}//" >output.two &&
+       test_cmp expect.two output.two
+       '
+
+test_expect_success 'prepare test prefixed globs match just prefix' '
+       cat >expect.three <<EOF
+Tag commit to t_
+Branch commit to b_
+initial
+EOF
+       '
+
+test_expect_success 'test prefixed globs match just prefix' '
+       git config --add svn-remote.three.url "$svnrepo" &&
+       git config --add svn-remote.three.fetch \
+                        trunk:refs/remotes/three/trunk &&
+       git config --add svn-remote.three.branches \
+                        "branches/b_*:refs/remotes/three/branches/*" &&
+       git config --add svn-remote.three.tags \
+                        "tags/t_*:refs/remotes/three/tags/*" &&
+       (
+               cd tmp &&
+               svn_cmd cp trunk branches/b_ &&
+               echo "Branch commit to b_" >>branches/b_/src/a/readme &&
+               poke branches/b_/src/a/readme &&
+               svn_cmd commit -m "Branch commit to b_" &&
+               svn_cmd up && svn_cmd cp branches/b_ tags/t_ &&
+               echo "Tag commit to t_" >>tags/t_/src/a/readme &&
+               poke tags/t_/src/a/readme &&
+               svn_cmd commit -m "Tag commit to t_" &&
+               svn_cmd up
+       ) &&
+       git svn fetch three &&
+       test $(git rev-list refs/remotes/three/branches/b_ | wc -l) -eq 2 &&
+       test $(git rev-list refs/remotes/three/tags/t_ | wc -l) -eq 3 &&
+       test $(git rev-parse refs/remotes/three/branches/b_~1) = \
+            $(git rev-parse refs/remotes/three/trunk) &&
+       test $(git rev-parse refs/remotes/three/tags/t_~1) = \
+            $(git rev-parse refs/remotes/three/branches/b_) &&
+       git log --pretty=oneline refs/remotes/three/tags/t_ | \
+           sed -e "s/^.\{41\}//" >output.three &&
+       test_cmp expect.three output.three
+       '
+
+test_expect_success 'prepare test disallow prefixed multi-globs' "
+cat >expect.four <<EOF
+Only one set of wildcards (e.g. '*' or '*/*/*') is supported: branches/b_*/t/*
+
+EOF
+       "
+
+test_expect_success 'test disallow prefixed multi-globs' '
+       git config --add svn-remote.four.url "$svnrepo" &&
+       git config --add svn-remote.four.fetch \
+                        trunk:refs/remotes/four/trunk &&
+       git config --add svn-remote.four.branches \
+                        "branches/b_*/t/*:refs/remotes/four/branches/*" &&
+       git config --add svn-remote.four.tags \
+                        "tags/t_*/*:refs/remotes/four/tags/*" &&
+       (
+               cd tmp &&
+               echo "try try" >>tags/t_end/src/b/readme &&
+               poke tags/t_end/src/b/readme &&
+               svn_cmd commit -m "try to try"
+       ) &&
+       test_must_fail git svn fetch four 2>stderr.four &&
+       test_cmp expect.four stderr.four &&
+       git config --unset svn-remote.four.branches &&
+       git config --unset svn-remote.four.tags
+       '
+
+test_expect_success 'prepare test globbing in the middle of the word' '
+       cat >expect.five <<EOF
+Tag commit to fghij
+Branch commit to abcde
+initial
+EOF
+       '
+
+test_expect_success 'test globbing in the middle of the word' '
+       git config --add svn-remote.five.url "$svnrepo" &&
+       git config --add svn-remote.five.fetch \
+                        trunk:refs/remotes/five/trunk &&
+       git config --add svn-remote.five.branches \
+                        "branches/a*e:refs/remotes/five/branches/*" &&
+       git config --add svn-remote.five.tags \
+                        "tags/f*j:refs/remotes/five/tags/*" &&
+       (
+               cd tmp &&
+               svn_cmd cp trunk branches/abcde &&
+               echo "Branch commit to abcde" >>branches/abcde/src/a/readme &&
+               poke branches/b_/src/a/readme &&
+               svn_cmd commit -m "Branch commit to abcde" &&
+               svn_cmd up &&
+               svn_cmd cp branches/abcde tags/fghij &&
+               echo "Tag commit to fghij" >>tags/fghij/src/a/readme &&
+               poke tags/fghij/src/a/readme &&
+               svn_cmd commit -m "Tag commit to fghij" &&
+               svn_cmd up
+       ) &&
+       git svn fetch five &&
+       test $(git rev-list refs/remotes/five/branches/abcde | wc -l) -eq 2 &&
+       test $(git rev-list refs/remotes/five/tags/fghij | wc -l) -eq 3 &&
+       test $(git rev-parse refs/remotes/five/branches/abcde~1) = \
+            $(git rev-parse refs/remotes/five/trunk) &&
+       test $(git rev-parse refs/remotes/five/tags/fghij~1) = \
+            $(git rev-parse refs/remotes/five/branches/abcde) &&
+       git log --pretty=oneline refs/remotes/five/tags/fghij | \
+           sed -e "s/^.\{41\}//" >output.five &&
+       test_cmp expect.five output.five
+       '
+
+test_expect_success 'prepare test disallow multiple asterisks in one word' "
+       echo \"Only one '*' is allowed in a pattern: 'a*c*e'\" >expect.six &&
+       echo \"\" >>expect.six
+       "
+
+test_expect_success 'test disallow multiple asterisks in one word' '
+       git config --add svn-remote.six.url "$svnrepo" &&
+       git config --add svn-remote.six.fetch \
+                        trunk:refs/remotes/six/trunk &&
+       git config --add svn-remote.six.branches \
+                        "branches/a*c*e:refs/remotes/six/branches/*" &&
+       git config --add svn-remote.six.tags \
+                        "tags/f*h*j:refs/remotes/six/tags/*" &&
+       (
+               cd tmp &&
+               echo "try try" >>tags/fghij/src/b/readme &&
+               poke tags/fghij/src/b/readme &&
+               svn_cmd commit -m "try to try"
+       ) &&
+       test_must_fail git svn fetch six 2>stderr.six &&
+       test_cmp expect.six stderr.six
+       '
+
+test_done
index ca3cfa4b00d857603e6c72536fa6905a7ee2905f..095e61f0adde0741a3c95817f10df4b957d473ee 100644 (file)
@@ -678,8 +678,9 @@ struct transport *transport_get(struct remote *remote, const char *url)
                || starts_with(url, "file://")
                || starts_with(url, "git://")
                || starts_with(url, "ssh://")
-               || starts_with(url, "git+ssh://")
-               || starts_with(url, "ssh+git://")) {
+               || starts_with(url, "git+ssh://") /* deprecated - do not use */
+               || starts_with(url, "ssh+git://") /* deprecated - do not use */
+               ) {
                /*
                 * These are builtin smart transports; "allowed" transports
                 * will be checked individually in git_connect.