Merge branch 'js/git-gdb'
authorJunio C Hamano <gitster@pobox.com>
Tue, 3 Nov 2015 23:13:05 +0000 (15:13 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 3 Nov 2015 23:13:05 +0000 (15:13 -0800)
Allow easier debugging of a single "git" invocation in our test
scripts.

* js/git-gdb:
test: facilitate debugging Git executables in tests with gdb

54 files changed:
Documentation/RelNotes/2.7.0.txt
Documentation/git-clone.txt
Documentation/git-merge-file.txt
Documentation/user-manual.txt
builtin/add.c
builtin/blame.c
builtin/clone.c
builtin/fmt-merge-msg.c
builtin/gc.c
builtin/merge-file.c
builtin/merge.c
builtin/reflog.c
builtin/rev-parse.c
builtin/show-branch.c
commit.c
compat/regex/regcomp.c
git-compat-util.h
git-difftool.perl
git-merge-one-file.sh
git-rebase--interactive.sh
gitk-git/gitk
gitk-git/po/bg.po
gitk-git/po/ca.po
gitk-git/po/de.po
gitk-git/po/es.po
gitk-git/po/fr.po
gitk-git/po/hu.po
gitk-git/po/it.po
gitk-git/po/ja.po
gitk-git/po/pt_br.po
gitk-git/po/ru.po
gitk-git/po/sv.po
gitk-git/po/vi.po
imap-send.c
mailinfo.c
merge-recursive.c
pack-revindex.c
ref-filter.c
remote.c
revision.c
sha1_file.c
shallow.c
submodule.c
t/t2200-add-update.sh
t/t2202-add-addremove.sh
t/t3030-merge-recursive.sh
t/t3203-branch-output.sh
t/t3404-rebase-interactive.sh
t/t5700-clone-reference.sh
t/t6031-merge-filemode.sh [new file with mode: 0755]
t/t6031-merge-recursive.sh [deleted file]
t/t7600-merge.sh
t/t7800-difftool.sh
upload-pack.c
index 516d9f33ca769925a447541fdc9d1d5b7be99681..239fe9f6b79a178d548cbb56195e5352553eef92 100644 (file)
@@ -55,6 +55,9 @@ UI, Workflows & Features
 
  * "git worktree" learned a "list" subcommand.
 
+ * "git clone --dissociate" learned that it can be used even when
+   "--reference" was not used at the same time.
+
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -179,8 +182,11 @@ notes for details).
 
  * "git rebase -i" had a minor regression recently, which stopped
    considering a line that begins with an indented '#' in its insn
-   sheet not a comment, which is now fixed.
-   (merge 1db168e gr/rebase-i-drop-warn later to maint).
+   sheet not a comment. Further, the code was still too picky on
+   Windows where CRLF left by the editor is turned into a trailing CR
+   on the line read via the "read" built-in command of bash.  Both of
+   these issues are now fixed.
+   (merge 39743cf gr/rebase-i-drop-warn later to maint).
 
  * After "git checkout --detach", "git status" reported a fairly
    useless "HEAD detached at HEAD", instead of saying at which exact
@@ -278,6 +284,26 @@ notes for details).
    borrowing cache entries and restructuring the API somewhat.
    (merge 41284eb dt/name-hash-dir-entry-fix later to maint).
 
+ * "git merge-file" tried to signal how many conflicts it found, which
+   obviously would not work well when there are too many of them.
+   (merge e34f802 jk/merge-file-exit-code later to maint).
+
+ * The error message from "git blame --contents --reverse" incorrectly
+   talked about "--contents --children".
+   (merge 9526197 mk/blame-error-message later to maint).
+
+ * "git imap-send" did not compile well with older version of cURL library.
+   (merge 71d9257 js/imap-send-curl-compilation-fix later to maint).
+
+ * Merging a branch that removes a path and another that changes the
+   mode bits on the same path should have conflicted at the path, but
+   it didn't and silently favoured the removal.
+   (merge 72fac66 jk/delete-modechange-conflict later to maint).
+
+ * "git --literal-pathspecs add -u/-A" without any command line
+   argument misbehaved ever since Git 2.0.
+   (merge 29abb33 jc/add-u-A-default-to-top later to maint).
+
  * Code clean-up, minor fixes etc.
    (merge 15ed07d jc/rerere later to maint).
    (merge e7a7401 pt/pull-builtin later to maint).
@@ -292,3 +318,6 @@ notes for details).
    (merge 3b19dba jc/em-dash-in-doc later to maint).
    (merge f3f38c7 jc/everyday-markup later to maint).
    (merge 77d5f71 xf/user-manual-markup later to maint).
+   (merge b2af482 xf/user-manual-ff later to maint).
+   (merge e510ab8 rs/pop-commit later to maint).
+   (merge fdcdb77 js/misc-fixes later to maint).
index f1f2a3f7ea92282756a0b2b72271469561b442df..6bf000dac348880cc2f5b8d3cb6825e7a1ca82b4 100644 (file)
@@ -104,8 +104,13 @@ objects from the source repository into a pack in the cloned repository.
 --dissociate::
        Borrow the objects from reference repositories specified
        with the `--reference` options only to reduce network
-       transfer and stop borrowing from them after a clone is made
-       by making necessary local copies of borrowed objects.
+       transfer, and stop borrowing from them after a clone is made
+       by making necessary local copies of borrowed objects.  This
+       option can also be used when cloning locally from a
+       repository that already borrows objects from another
+       repository--the new repository will borrow objects from the
+       same repository, and this option can be used to stop the
+       borrowing.
 
 --quiet::
 -q::
index d2fc12ec77b85a5c9457cbfa160e5c05c1a32f43..f85603261325f6f88b31c30b5fb2bafcded58d92 100644 (file)
@@ -41,7 +41,8 @@ lines from `<other-file>`, or lines from both respectively.  The length of the
 conflict markers can be given with the `--marker-size` option.
 
 The exit value of this program is negative on error, and the number of
-conflicts otherwise. If the merge was clean, the exit value is 0.
+conflicts otherwise (truncated to 127 if there are more than that many
+conflicts). If the merge was clean, the exit value is 0.
 
 'git merge-file' is designed to be a minimal clone of RCS 'merge'; that is, it
 implements all of RCS 'merge''s functionality which is needed by
index 764a270c83ba6202ff7a3b58e6e067684ea3301f..1c790ac74a6907365c4a69938c3a75ab690cfc2e 100644 (file)
@@ -1431,11 +1431,11 @@ differently.  Normally, a merge results in a merge commit, with two
 parents, one pointing at each of the two lines of development that
 were merged.
 
-However, if the current branch is a descendant of the other--so every
-commit present in the one is already contained in the other--then Git
-just performs a "fast-forward"; the head of the current branch is moved
-forward to point at the head of the merged-in branch, without any new
-commits being created.
+However, if the current branch is an ancestor of the other--so every commit
+present in the current branch is already contained in the other branch--then Git
+just performs a "fast-forward"; the head of the current branch is moved forward
+to point at the head of the merged-in branch, without any new commits being
+created.
 
 [[fixing-mistakes]]
 Fixing mistakes
index b2a5c57f0afde85a7584e1edc7a45b67d12d143d..145f06ef97afd1e9e8d5cbe13da82cffa504e32c 100644 (file)
@@ -336,14 +336,8 @@ int cmd_add(int argc, const char **argv, const char *prefix)
        if (!show_only && ignore_missing)
                die(_("Option --ignore-missing can only be used together with --dry-run"));
 
-       if ((0 < addremove_explicit || take_worktree_changes) && !argc) {
-               static const char *whole[2] = { ":/", NULL };
-               argc = 1;
-               argv = whole;
-       }
-
        add_new_files = !take_worktree_changes && !refresh_only;
-       require_pathspec = !take_worktree_changes;
+       require_pathspec = !(take_worktree_changes || (0 < addremove_explicit));
 
        hold_locked_index(&lock_file, 1);
 
index 6fc7bff9a37e7b9acf24eb65546dfb8e3c87c8fb..3b80e8fd75cc0743035642cb82a284271925c865 100644 (file)
@@ -2691,7 +2691,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
                sb.commits.compare = compare_commits_by_commit_date;
        }
        else if (contents_from)
-               die("--contents and --children do not blend well.");
+               die("--contents and --reverse do not blend well.");
        else if (revs.first_parent_only)
                die("combining --first-parent and --reverse is not supported");
        else {
index 9eaecd9a7cdb9ad6726626c96edd05d2d9305453..caae43e7a390d8666cda259e995c14079103d20d 100644 (file)
@@ -801,11 +801,15 @@ static void write_refspec_config(const char *src_ref_prefix,
 static void dissociate_from_references(void)
 {
        static const char* argv[] = { "repack", "-a", "-d", NULL };
+       char *alternates = git_pathdup("objects/info/alternates");
 
-       if (run_command_v_opt(argv, RUN_GIT_CMD|RUN_COMMAND_NO_STDIN))
-               die(_("cannot repack to clean up"));
-       if (unlink(git_path("objects/info/alternates")) && errno != ENOENT)
-               die_errno(_("cannot unlink temporary alternates file"));
+       if (!access(alternates, F_OK)) {
+               if (run_command_v_opt(argv, RUN_GIT_CMD|RUN_COMMAND_NO_STDIN))
+                       die(_("cannot repack to clean up"));
+               if (unlink(alternates) && errno != ENOENT)
+                       die_errno(_("cannot unlink temporary alternates file"));
+       }
+       free(alternates);
 }
 
 int cmd_clone(int argc, const char **argv, const char *prefix)
@@ -954,10 +958,6 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
 
        if (option_reference.nr)
                setup_reference();
-       else if (option_dissociate) {
-               warning(_("--dissociate given, but there is no --reference"));
-               option_dissociate = 0;
-       }
 
        fetch_pattern = value.buf;
        refspec = parse_fetch_refspec(1, &fetch_pattern);
index 4ba7f282a5f6cd2e0af643f865a34c3048f2f591..846004b83358cd8adfd5f7de96b2d551700037a1 100644 (file)
@@ -537,7 +537,7 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
 static void find_merge_parents(struct merge_parents *result,
                               struct strbuf *in, unsigned char *head)
 {
-       struct commit_list *parents, *next;
+       struct commit_list *parents;
        struct commit *head_commit;
        int pos = 0, i, j;
 
@@ -576,13 +576,10 @@ static void find_merge_parents(struct merge_parents *result,
        parents = reduce_heads(parents);
 
        while (parents) {
+               struct commit *cmit = pop_commit(&parents);
                for (i = 0; i < result->nr; i++)
-                       if (!hashcmp(result->item[i].commit,
-                                    parents->item->object.sha1))
+                       if (!hashcmp(result->item[i].commit, cmit->object.sha1))
                                result->item[i].used = 1;
-               next = parents->next;
-               free(parents);
-               parents = next;
        }
 
        for (i = j = 0; i < result->nr; i++) {
index b677923ffc2eec4b12ee9253ca4849ec063daa10..df3e454447ea4e4e34c6a7eac7ef54df1d614df6 100644 (file)
@@ -240,7 +240,7 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
                         * running.
                         */
                        time(NULL) - st.st_mtime <= 12 * 3600 &&
-                       fscanf(fp, "%"PRIuMAX" %127c", &pid, locking_host) == 2 &&
+                       fscanf(fp, "%"SCNuMAX" %127c", &pid, locking_host) == 2 &&
                        /* be gentle to concurrent "gc" on remote hosts */
                        (strcmp(locking_host, my_host) || !kill(pid, 0) || errno == EPERM);
                if (fp != NULL)
index 50d0bc873bee47ea6d1ab3b8e303e0a779465825..55447053f2dde004ceffff9967b015b4a01c35d1 100644 (file)
@@ -104,5 +104,8 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix)
                free(result.ptr);
        }
 
+       if (ret > 127)
+               ret = 127;
+
        return ret;
 }
index 977ffff2876de4d817025bbf6d11ec251b674141..bbf3110f88ae118065da4994de63f345cf414ba7 100644 (file)
@@ -1019,7 +1019,7 @@ static struct commit_list *reduce_parents(struct commit *head_commit,
                                          int *head_subsumed,
                                          struct commit_list *remoteheads)
 {
-       struct commit_list *parents, *next, **remotes = &remoteheads;
+       struct commit_list *parents, **remotes;
 
        /*
         * Is the current HEAD reachable from another commit being
@@ -1033,16 +1033,14 @@ static struct commit_list *reduce_parents(struct commit *head_commit,
        /* Find what parents to record by checking independent ones. */
        parents = reduce_heads(remoteheads);
 
-       for (remoteheads = NULL, remotes = &remoteheads;
-            parents;
-            parents = next) {
-               struct commit *commit = parents->item;
-               next = parents->next;
+       remoteheads = NULL;
+       remotes = &remoteheads;
+       while (parents) {
+               struct commit *commit = pop_commit(&parents);
                if (commit == head_commit)
                        *head_subsumed = 0;
                else
                        remotes = &commit_list_insert(commit, remotes)->next;
-               free(parents);
        }
        return remoteheads;
 }
index f96ca2a27dcb9ac6daa3aa110ff657981296502a..cf1145e635c559206a6b0d61e41321fa914e5e42 100644 (file)
@@ -218,7 +218,6 @@ static int keep_entry(struct commit **it, unsigned char *sha1)
  */
 static void mark_reachable(struct expire_reflog_policy_cb *cb)
 {
-       struct commit *commit;
        struct commit_list *pending;
        unsigned long expire_limit = cb->mark_limit;
        struct commit_list *leftover = NULL;
@@ -228,11 +227,8 @@ static void mark_reachable(struct expire_reflog_policy_cb *cb)
 
        pending = cb->mark_list;
        while (pending) {
-               struct commit_list *entry = pending;
                struct commit_list *parent;
-               pending = entry->next;
-               commit = entry->item;
-               free(entry);
+               struct commit *commit = pop_commit(&pending);
                if (commit->object.flags & REACHABLE)
                        continue;
                if (parse_commit(commit))
index 02d747dcb1a318af98ec06a7ab2f4e489e7c2625..e92a782f7729f0e5522969238920be2b7e607366 100644 (file)
@@ -281,11 +281,8 @@ static int try_difference(const char *arg)
                        b = lookup_commit_reference(end);
                        exclude = get_merge_bases(a, b);
                        while (exclude) {
-                               struct commit_list *n = exclude->next;
-                               show_rev(REVERSED,
-                                        exclude->item->object.sha1,NULL);
-                               free(exclude);
-                               exclude = n;
+                               struct commit *commit = pop_commit(&exclude);
+                               show_rev(REVERSED, commit->object.sha1, NULL);
                        }
                }
                *dotdot = '.';
index 092b59b0b3c0782a9802b9c3200d5523ac4e2e3e..ac5141df80dffaf7adc42f76989698a5a90cb677 100644 (file)
@@ -53,17 +53,6 @@ static struct commit *interesting(struct commit_list *list)
        return NULL;
 }
 
-static struct commit *pop_one_commit(struct commit_list **list_p)
-{
-       struct commit *commit;
-       struct commit_list *list;
-       list = *list_p;
-       commit = list->item;
-       *list_p = list->next;
-       free(list);
-       return commit;
-}
-
 struct commit_name {
        const char *head_name; /* which head's ancestor? */
        int generation; /* how many parents away from head_name */
@@ -213,7 +202,7 @@ static void join_revs(struct commit_list **list_p,
        while (*list_p) {
                struct commit_list *parents;
                int still_interesting = !!interesting(*list_p);
-               struct commit *commit = pop_one_commit(list_p);
+               struct commit *commit = pop_commit(list_p);
                int flags = commit->object.flags & all_mask;
 
                if (!still_interesting && extra <= 0)
@@ -504,7 +493,7 @@ static int show_merge_base(struct commit_list *seen, int num_rev)
        int exit_status = 1;
 
        while (seen) {
-               struct commit *commit = pop_one_commit(&seen);
+               struct commit *commit = pop_commit(&seen);
                int flags = commit->object.flags & all_mask;
                if (!(flags & UNINTERESTING) &&
                    ((flags & all_revs) == all_revs)) {
@@ -929,7 +918,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
        all_revs = all_mask & ~((1u << REV_SHIFT) - 1);
 
        while (seen) {
-               struct commit *commit = pop_one_commit(&seen);
+               struct commit *commit = pop_commit(&seen);
                int this_flag = commit->object.flags;
                int is_merge_point = ((this_flag & all_revs) == all_revs);
 
index 494615d6ff15af5eb95e78053b2799e4c55577fc..d1810c940b3cb354437e86eee38e2c2499375e80 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -455,11 +455,8 @@ struct commit_list *copy_commit_list(struct commit_list *list)
 
 void free_commit_list(struct commit_list *list)
 {
-       while (list) {
-               struct commit_list *temp = list;
-               list = temp->next;
-               free(temp);
-       }
+       while (list)
+               pop_commit(&list);
 }
 
 struct commit_list * commit_list_insert_by_date(struct commit *item, struct commit_list **list)
@@ -505,12 +502,8 @@ void commit_list_sort_by_date(struct commit_list **list)
 struct commit *pop_most_recent_commit(struct commit_list **list,
                                      unsigned int mark)
 {
-       struct commit *ret = (*list)->item;
+       struct commit *ret = pop_commit(list);
        struct commit_list *parents = ret->parents;
-       struct commit_list *old = *list;
-
-       *list = (*list)->next;
-       free(old);
 
        while (parents) {
                struct commit *commit = parents->item;
@@ -861,11 +854,9 @@ static struct commit_list *merge_bases_many(struct commit *one, int n, struct co
        list = paint_down_to_common(one, n, twos);
 
        while (list) {
-               struct commit_list *next = list->next;
-               if (!(list->item->object.flags & STALE))
-                       commit_list_insert_by_date(list->item, &result);
-               free(list);
-               list = next;
+               struct commit *commit = pop_commit(&list);
+               if (!(commit->object.flags & STALE))
+                       commit_list_insert_by_date(commit, &result);
        }
        return result;
 }
@@ -1546,13 +1537,9 @@ int commit_tree_extended(const char *msg, size_t msg_len,
         * if everything else stays the same.
         */
        while (parents) {
-               struct commit_list *next = parents->next;
-               struct commit *parent = parents->item;
-
+               struct commit *parent = pop_commit(&parents);
                strbuf_addf(&buffer, "parent %s\n",
                            sha1_to_hex(parent->object.sha1));
-               free(parents);
-               parents = next;
        }
 
        /* Person/date information */
index 06f30887080bc293994ed470ff9b313ae048dcfb..fba5986399ed20174d37c39bf6d243bcbfddd3a7 100644 (file)
@@ -18,6 +18,8 @@
    Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301 USA.  */
 
+#include <stdint.h>
+
 static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
                                          size_t length, reg_syntax_t syntax);
 static void re_compile_fastmap_iter (regex_t *bufp,
@@ -2577,7 +2579,7 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
     old_tree = NULL;
 
   if (elem->token.type == SUBEXP)
-    postorder (elem, mark_opt_subexp, (void *) (long) elem->token.opr.idx);
+    postorder (elem, mark_opt_subexp, (void *) (intptr_t) elem->token.opr.idx);
 
   tree = create_tree (dfa, elem, NULL, (end == -1 ? OP_DUP_ASTERISK : OP_ALT));
   if (BE (tree == NULL, 0))
@@ -3806,7 +3808,7 @@ create_token_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
 static reg_errcode_t
 mark_opt_subexp (void *extra, bin_tree_t *node)
 {
-  int idx = (int) (long) extra;
+  int idx = (int) (intptr_t) extra;
   if (node->token.type == SUBEXP && node->token.opr.idx == idx)
     node->token.opt_subexp = 1;
 
index 88964f7886b1f6d7445b77a26eceb65d48c3b6b8..8e3986791d13a5e9196eea95761f35b5dc2078da 100644 (file)
@@ -296,6 +296,10 @@ extern char *gitbasename(char *);
 #define PRIuMAX "llu"
 #endif
 
+#ifndef SCNuMAX
+#define SCNuMAX PRIuMAX
+#endif
+
 #ifndef PRIu32
 #define PRIu32 "u"
 #endif
@@ -568,7 +572,7 @@ extern int git_lstat(const char *, struct stat *);
 #endif
 
 #define DEFAULT_PACKED_GIT_LIMIT \
-       ((1024L * 1024L) * (sizeof(void*) >= 8 ? 8192 : 256))
+       ((1024L * 1024L) * (size_t)(sizeof(void*) >= 8 ? 8192 : 256))
 
 #ifdef NO_PREAD
 #define pread git_pread
index 7df7c8a9a7c889fbf5f0b2d6e67be66bf6fea6b1..488d14b153e50f69fcfb0c732cc8c23cf4b643de 100755 (executable)
@@ -70,9 +70,7 @@ sub use_wt_file
        my ($repo, $workdir, $file, $sha1) = @_;
        my $null_sha1 = '0' x 40;
 
-       if (! -e "$workdir/$file") {
-               # If the file doesn't exist in the working tree, we cannot
-               # use it.
+       if (-l "$workdir/$file" || ! -e _) {
                return (0, $null_sha1);
        }
 
index 07dfeb8df4bf910c5c79fb4c3dd3345ba4719da0..cdc02af517c9d77a081d7918480f8d0a2c6a29d0 100755 (executable)
@@ -38,6 +38,14 @@ case "${1:-.}${2:-.}${3:-.}" in
 # Deleted in both or deleted in one and unchanged in the other
 #
 "$1.." | "$1.$1" | "$1$1.")
+       if { test -z "$6" && test "$5" != "$7"; } ||
+          { test -z "$7" && test "$5" != "$6"; }
+       then
+               echo "ERROR: File $4 deleted on one branch but had its" >&2
+               echo "ERROR: permissions changed on the other." >&2
+               exit 1
+       fi
+
        if test -n "$2"
        then
                echo "Removing $4"
index d65c06eff36f09c982d66b11684d8f3ab3784393..30edb179259d634f20649fe7f74df3f0c58f10ec 100644 (file)
@@ -77,6 +77,10 @@ amend="$state_dir"/amend
 rewritten_list="$state_dir"/rewritten-list
 rewritten_pending="$state_dir"/rewritten-pending
 
+# Work around Git for Windows' Bash whose "read" does not strip CRLF
+# and leaves CR at the end instead.
+cr=$(printf "\015")
+
 strategy_args=
 if test -n "$do_merge"
 then
@@ -518,6 +522,10 @@ do_next () {
        "$comment_char"*|''|noop|drop|d)
                mark_action_done
                ;;
+       "$cr")
+               # Work around CR left by "read" (e.g. with Git for Windows' Bash).
+               mark_action_done
+               ;;
        pick|p)
                comment_for_reflog pick
 
@@ -896,6 +904,10 @@ check_bad_cmd_and_sha () {
                "$comment_char"*|''|noop|x|exec)
                        # Doesn't expect a SHA-1
                        ;;
+               "$cr")
+                       # Work around CR left by "read" (e.g. with Git for
+                       # Windows' Bash).
+                       ;;
                pick|p|drop|d|reword|r|edit|e|squash|s|fixup|f)
                        if ! check_commit_sha "${rest%%[        ]*}" "$lineno" "$1"
                        then
index 2028b554f48798c87852cdb3c5ab6b558ad6722e..fcc606eab7353e67f82de873c3532cefc137a9e5 100755 (executable)
@@ -12452,8 +12452,8 @@ if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} {
     set viewchanged(1) 0
     set vdatemode(1) 0
     addviewmenu 1
-    .bar.view entryconf [mca "Edit view..."] -state normal
-    .bar.view entryconf [mca "Delete view"] -state normal
+    .bar.view entryconf [mca "&Edit view..."] -state normal
+    .bar.view entryconf [mca "&Delete view"] -state normal
 }
 
 if {[info exists permviews]} {
index 61073ebf6b56824ec5ade2bf43a6a31a17e5b96e..909a56463fe6ddb35427301624ba648950070787 100644 (file)
@@ -89,71 +89,71 @@ msgid "Cancel"
 msgstr "Отказ"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Обновяване"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Презареждане"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Наново прочитане на настройките"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Изброяване на указателите"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Стартиране на „git gui“"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Спиране на програмата"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Файл"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Настройки"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Редактиране"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Нов изглед…"
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Редактиране на изгледа…"
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Изтриване на изгледа"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Всички файлове"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Изглед"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "Относно gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Клавишни комбинации"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Помощ"
 
 #: gitk:2185 gitk:8652
index 976037a645041e9aad0be5ee1350d1c8af783835..5ad066f7ce84c4be7801a467498ee3de3abccbf9 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: gitk\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-05-17 14:32+1000\n"
-"PO-Revision-Date: 2015-02-01 22:49-0700\n"
+"PO-Revision-Date: 2015-10-05 22:23-0600\n"
 "Last-Translator: Alex Henrie <alexhenrie24@gmail.com>\n"
 "Language-Team: Catalan\n"
 "Language: ca\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.7.3\n"
+"X-Generator: Poedit 1.8.5\n"
 
 #: gitk:140
 msgid "Couldn't get list of unmerged files:"
@@ -91,71 +91,71 @@ msgid "Cancel"
 msgstr "Cancel·la"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Actualitza"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Recarrega"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Rellegeix les referències"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Llista les referències"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Inicia el git gui"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Surt"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Fitxer"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Preferències"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Edita"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Vista nova..."
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Edita la vista..."
 
 #: gitk:2086
-msgid "Delete view"
-msgstr "Suprimeix vista"
+msgid "&Delete view"
+msgstr "Suprimeix la vista"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Tots els fitxers"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Vista"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "Quant al gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Associacions de tecles"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Ajuda"
 
 #: gitk:2185 gitk:8652
@@ -330,7 +330,7 @@ msgstr "Elimina aquesta branca"
 
 #: gitk:2649
 msgid "Copy branch name"
-msgstr ""
+msgstr "Copia el nom de branca"
 
 #: gitk:2656
 msgid "Highlight this too"
@@ -350,7 +350,7 @@ msgstr "Culpabilitat de la comissió mare"
 
 #: gitk:2660
 msgid "Copy path"
-msgstr ""
+msgstr "Copia el camí"
 
 #: gitk:2667
 msgid "Show origin of this line"
@@ -408,11 +408,11 @@ msgstr "<Fi>\t\tVés a l'última comissió"
 
 #: gitk:3052
 msgid "<Up>, p, k\tMove up one commit"
-msgstr "<Amunt>, p, k\tMou-te una comissió amunt"
+msgstr "<Amunt>, p, k\tMou-te cap amunt per una comissió"
 
 #: gitk:3053
 msgid "<Down>, n, j\tMove down one commit"
-msgstr "<Avall>, n, j\tMou-te una comissió avall"
+msgstr "<Avall>, n, j\tMou-te cap avall per una comissió"
 
 #: gitk:3054
 msgid "<Left>, z, h\tGo back in history list"
@@ -430,11 +430,11 @@ msgstr ""
 
 #: gitk:3057
 msgid "<PageUp>\tMove up one page in commit list"
-msgstr "<RePàg>\tBaixa una pàgina en la llista de comissions"
+msgstr "<RePàg>\tMou-te cap amunt per una pàgina en la llista de comissions"
 
 #: gitk:3058
 msgid "<PageDown>\tMove down one page in commit list"
-msgstr "<AvPàg>\tBaixa per una pàgina en la llista de comissions"
+msgstr "<AvPàg>\tMou-te cap avall per una pàgina en la llista de comissions"
 
 #: gitk:3059
 #, tcl-format
@@ -449,50 +449,50 @@ msgstr "<%s-Fi>\tDesplaça't a la part inferior de la llista de comissions"
 #: gitk:3061
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
-msgstr "<%s-Amunt>\tDesplaça la llista de comissions una línia cap amunt"
+msgstr "<%s-Amunt>\tDesplaça la llista de comissions cap amunt per una línia"
 
 #: gitk:3062
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
-msgstr "<%s-Avall>\tDesplaça la llista de comissions una línia cap avall"
+msgstr "<%s-Avall>\tDesplaça la llista de comissions cap avall per una línia"
 
 #: gitk:3063
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
-msgstr "<%s-RePàg>\tDesplaça la llista de comissions amunt per una pàgina"
+msgstr "<%s-RePàg>\tDesplaça la llista de comissions cap amunt per una pàgina"
 
 #: gitk:3064
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
-msgstr "<%s-AvPàg>\tDesplaça la llista de comissions una pàgina cap avall"
+msgstr "<%s-AvPàg>\tDesplaça la llista de comissions cap avall per una pàgina"
 
 #: gitk:3065
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
-msgstr "<Maj-Amunt>\tCerca cap enrere (amunt, les comissions més noves)"
+msgstr "<Maj-Amunt>\tCerca cap enrere (cap amunt, les comissions més noves)"
 
 #: gitk:3066
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
-msgstr "<Maj-Avall>\tCerca cap endavant (avall, les comissions més velles)"
+msgstr "<Maj-Avall>\tCerca cap endavant (cap avall, les comissions més velles)"
 
 #: gitk:3067
 msgid "<Delete>, b\tScroll diff view up one page"
-msgstr "<Supr>, b\tDesplaça la vista de diferència una pàgina cap amunt"
+msgstr "<Supr>, b\tDesplaça la vista de diferència cap amunt per una pàgina"
 
 #: gitk:3068
 msgid "<Backspace>\tScroll diff view up one page"
-msgstr "<Retrocés>\tDesplaça la vista de diferència una pàgina cap amunt"
+msgstr "<Retrocés>\tDesplaça la vista de diferència cap amunt per una pàgina"
 
 #: gitk:3069
 msgid "<Space>\t\tScroll diff view down one page"
-msgstr "<Espai>\t\tDesplaça la vista de diferència una pàgina cap avall"
+msgstr "<Espai>\t\tDesplaça la vista de diferència cap avall per una pàgina"
 
 #: gitk:3070
 msgid "u\t\tScroll diff view up 18 lines"
-msgstr "u\t\tDesplaça la vista de diferència 18 línies cap amunt"
+msgstr "u\t\tDesplaça la vista de diferència cap amunt per 18 línies"
 
 #: gitk:3071
 msgid "d\t\tScroll diff view down 18 lines"
-msgstr "d\t\tDesplaça la vista de diferència 18 línies cap avall "
+msgstr "d\t\tDesplaça la vista de diferència cap avall per 18 línies"
 
 #: gitk:3072
 #, tcl-format
@@ -509,9 +509,8 @@ msgid "<Return>\tMove to next find hit"
 msgstr "<Retorn>\tMou-te a la propera coincidència de la cerca"
 
 #: gitk:3075
-#, fuzzy
 msgid "g\t\tGo to commit"
-msgstr "<Fi>\t\tVés a l'última comissió"
+msgstr "g\t\tVés a l'última comissió"
 
 #: gitk:3076
 msgid "/\t\tFocus the search box"
@@ -668,9 +667,8 @@ msgid "Matches all Commit Info criteria"
 msgstr "Coincideix amb tots els criteris d'informació de comissió"
 
 #: gitk:4086
-#, fuzzy
 msgid "Matches no Commit Info criteria"
-msgstr "Coincideix amb tots els criteris d'informació de comissió"
+msgstr "No coincideix amb cap criteri d'informació de comissió"
 
 #: gitk:4087
 msgid "Changes to Files:"
@@ -1310,7 +1308,7 @@ msgstr "fons de la línia marcada"
 
 #: gitk:11450
 msgid "Select bg"
-msgstr "fons de la selecció"
+msgstr "Fons de la selecció"
 
 #: gitk:11459
 msgid "Fonts: press to choose"
@@ -1354,6 +1352,8 @@ msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
 msgstr ""
+"Perdó, el gitk no pot executar-se amb aquesta versió de Tcl/Tk.\n"
+" El Gitk requereix com a mínim el Tcl/Tk 8.4."
 
 #: gitk:12269
 msgid "Cannot find a git repository here."
@@ -1367,6 +1367,3 @@ msgstr "Paràmetre ambigu '%s': és tant revisió com nom de fitxer"
 #: gitk:12328
 msgid "Bad arguments to gitk:"
 msgstr "Paràmetres dolents al gitk:"
-
-#~ msgid "mc"
-#~ msgstr "mc"
index 1a3264b2b0020a0912da8497259ce9485288589d..d9ba4052e20bc8dddc091e3a60103d33af349a63 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: git-gui\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-05-17 14:32+1000\n"
-"PO-Revision-Date: 2010-01-27 20:27+0100\n"
+"PO-Revision-Date: 2015-10-20 14:20+0200\n"
 "Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
 "Language-Team: German\n"
 "Language: \n"
@@ -89,72 +89,72 @@ msgid "Cancel"
 msgstr "Abbrechen"
 
 #: gitk:2069
-msgid "Update"
-msgstr "Aktualisieren"
+msgid "&Update"
+msgstr "&Aktualisieren"
 
 #: gitk:2070
-msgid "Reload"
-msgstr "Neu laden"
+msgid "&Reload"
+msgstr "&Neu laden"
 
 #: gitk:2071
-msgid "Reread references"
-msgstr "Zweige neu laden"
+msgid "Reread re&ferences"
+msgstr "&Zweige neu laden"
 
 #: gitk:2072
-msgid "List references"
-msgstr "Zweige/Markierungen auflisten"
+msgid "&List references"
+msgstr "Zweige/Markierungen auf&listen"
 
 #: gitk:2074
-msgid "Start git gui"
-msgstr "»git gui« starten"
+msgid "Start git &gui"
+msgstr "»git &gui« starten"
 
 #: gitk:2076
-msgid "Quit"
-msgstr "Beenden"
+msgid "&Quit"
+msgstr "&Beenden"
 
 #: gitk:2068
-msgid "File"
-msgstr "Datei"
+msgid "&File"
+msgstr "&Datei"
 
 #: gitk:2080
-msgid "Preferences"
-msgstr "Einstellungen"
+msgid "&Preferences"
+msgstr "&Einstellungen"
 
 #: gitk:2079
-msgid "Edit"
-msgstr "Bearbeiten"
+msgid "&Edit"
+msgstr "&Bearbeiten"
 
 #: gitk:2084
-msgid "New view..."
-msgstr "Neue Ansicht ..."
+msgid "&New view..."
+msgstr "&Neue Ansicht ..."
 
 #: gitk:2085
-msgid "Edit view..."
-msgstr "Ansicht bearbeiten ..."
+msgid "&Edit view..."
+msgstr "Ansicht &bearbeiten ..."
 
 #: gitk:2086
-msgid "Delete view"
-msgstr "Ansicht entfernen"
+msgid "&Delete view"
+msgstr "Ansicht &entfernen"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
-msgstr "Alle Dateien"
+msgid "&All files"
+msgstr "&Alle Dateien"
 
 #: gitk:2083 gitk:4067
-msgid "View"
-msgstr "Ansicht"
+msgid "&View"
+msgstr "&Ansicht"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
-msgstr "Über gitk"
+msgid "&About gitk"
+msgstr "Über &gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
-msgstr "Tastenkürzel"
+msgid "&Key bindings"
+msgstr "&Tastenkürzel"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
-msgstr "Hilfe"
+msgid "&Help"
+msgstr "&Hilfe"
 
 #: gitk:2185 gitk:8652
 msgid "SHA1 ID:"
index 6402a411a6e866595617de1ad3641105b5067a42..ddcb0a5f68dc27127d72f2a42f6d77d2bbf7c23f 100644 (file)
@@ -91,71 +91,71 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Actualizar"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr ""
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Releer referencias"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Lista de referencias"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr ""
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Salir"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Archivo"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Preferencias"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Editar"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Nueva vista..."
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Modificar vista..."
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Eliminar vista"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Todos los archivos"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Vista"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "Acerca de gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Combinaciones de teclas"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Ayuda"
 
 #: gitk:2185 gitk:8652
index 6b1f05c6b9061e4cf2a98664b00f927a58ff0cea..80f72fb4535a2cfb4dc33b9f12fd002beb3f5d86 100644 (file)
@@ -93,71 +93,71 @@ msgid "Cancel"
 msgstr "Annuler"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Mise à jour"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Recharger"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Relire les références"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Lister les références"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Démarrer git gui"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Quitter"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Fichier"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Préférences"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Éditer"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Nouvelle vue..."
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Éditer la vue..."
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Supprimer la vue"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Tous les fichiers"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Vue"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "À propos de gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Raccourcis clavier"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Aide"
 
 #: gitk:2185 gitk:8652
index 00023f1cab4103f76d10438eeb793e7f6c1fd9b7..66fd75ba5b1634f13f067e4aab3cc1d921ca804b 100644 (file)
@@ -88,71 +88,71 @@ msgid "Cancel"
 msgstr "Visszavonás"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Frissités"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Újratöltés"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Referenciák újraolvasása"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Referenciák listázása"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Git gui indítása"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Kilépés"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Fájl"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Beállítások"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Szerkesztés"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Új nézet ..."
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Nézet szerkesztése ..."
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Nézet törlése"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Minden fájl"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Nézet"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "Gitk névjegy"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Billentyűkombináció"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Segítség"
 
 #: gitk:2185 gitk:8652
index b8212b17009b1909ff22f4f48f70518a7531597c..b5f002db7d52d3106d3a52dbb03047ad67233b62 100644 (file)
@@ -89,71 +89,71 @@ msgid "Cancel"
 msgstr "Annulla"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Aggiorna"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Ricarica"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Rileggi riferimenti"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Elenca riferimenti"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Avvia git gui"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Esci"
 
 #: gitk:2068
-msgid "File"
-msgstr "File"
+msgid "&File"
+msgstr "&File"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Preferenze"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Modifica"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Nuova vista..."
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Modifica vista..."
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Elimina vista"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Tutti i file"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Vista"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "Informazioni su gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Scorciatoie da tastiera"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Aiuto"
 
 #: gitk:2185 gitk:8652
index 8bbc67f6b58ab8a850f4950f834dbc8448ae22d3..59e42a89fd7e85dccc5acadbc1ad5bc4c8cd5e8f 100644 (file)
@@ -90,72 +90,72 @@ msgid "Cancel"
 msgstr "キャンセル"
 
 #: gitk:2069
-msgid "Update"
-msgstr "更新"
+msgid "&Update"
+msgstr "更新(&U)"
 
 #: gitk:2070
-msgid "Reload"
-msgstr "リロード"
+msgid "&Reload"
+msgstr "リロード(&R)"
 
 #: gitk:2071
-msgid "Reread references"
-msgstr "リファレンスを再読み込み"
+msgid "Reread re&ferences"
+msgstr "リファレンスを再読み込み(&F)"
 
 #: gitk:2072
-msgid "List references"
-msgstr "リファレンスリストを表示"
+msgid "&List references"
+msgstr "リファレンスリストを表示(&L)"
 
 #: gitk:2074
-msgid "Start git gui"
-msgstr "git gui の開始"
+msgid "Start git &gui"
+msgstr "git gui の開始(&G)"
 
 #: gitk:2076
-msgid "Quit"
-msgstr "終了"
+msgid "&Quit"
+msgstr "終了(&Q)"
 
 #: gitk:2068
-msgid "File"
-msgstr "ファイル"
+msgid "&File"
+msgstr "ファイル(&F)"
 
 #: gitk:2080
-msgid "Preferences"
-msgstr "設定"
+msgid "&Preferences"
+msgstr "設定(&P)"
 
 #: gitk:2079
-msgid "Edit"
-msgstr "編集"
+msgid "&Edit"
+msgstr "編集(&E)"
 
 #: gitk:2084
-msgid "New view..."
-msgstr "新規ビュー..."
+msgid "&New view..."
+msgstr "新規ビュー...(&N)"
 
 #: gitk:2085
-msgid "Edit view..."
-msgstr "ビュー編集..."
+msgid "&Edit view..."
+msgstr "ビュー編集...(&E)"
 
 #: gitk:2086
-msgid "Delete view"
-msgstr "ビュー削除"
+msgid "&Delete view"
+msgstr "ビュー削除(&D)"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
-msgstr "全てのファイル"
+msgid "&All files"
+msgstr "全てのファイル(&A)"
 
 #: gitk:2083 gitk:4067
-msgid "View"
-msgstr "ビュー"
+msgid "&View"
+msgstr "ビュー(&V)"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
-msgstr "gitk について"
+msgid "&About gitk"
+msgstr "gitk について(&A)"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
-msgstr "キーバインディング"
+msgid "&Key bindings"
+msgstr "キーバインディング(&K)"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
-msgstr "ヘルプ"
+msgid "&Help"
+msgstr "ヘルプ(&H)"
 
 #: gitk:2185 gitk:8652
 msgid "SHA1 ID:"
index 07e5d63b65cced4233d0a69f408b45d6ad072c6a..3f78f1b7482614098e295f3f1ffb6c0925ae6383 100644 (file)
@@ -90,71 +90,71 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Atualizar"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Recarregar"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Ler as referências novamente"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Listar referências"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Iniciar Git GUI"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Sair"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Arquivo"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Preferências"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Editar"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Nova vista..."
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Editar vista..."
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Apagar vista"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Todos os arquivos"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Exibir"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "Sobre o gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Atalhos de teclado"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Ajuda"
 
 #: gitk:2185 gitk:8652
index f1bac879e3a6dcd05c651d23223dccd126daaa09..17ed026aa7da7c636457c302b2c28f7b866ae45a 100644 (file)
@@ -1,18 +1,24 @@
-#
 # Translation of gitk to Russian.
 #
+# Translators:
+# 0xAX <kuleshovmail@gmail.com>, 2014
+# Alex Riesen <raa.lkml@gmail.com>, 2015
+# Dimitriy Ryazantcev <DJm00n@mail.ru>, 2015
+# Dmitry Potapov <dpotapov@gmail.com>, 2009
+# Skip <bsvskip@rambler.ru>, 2011
 msgid ""
 msgstr ""
-"Project-Id-Version: gitk\n"
+"Project-Id-Version: Git Russian Localization Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-05-17 14:32+1000\n"
-"PO-Revision-Date: 2009-04-24 16:00+0200\n"
-"Last-Translator: Alex Riesen <raa.lkml@gmail.com>\n"
-"Language-Team: Russian\n"
-"Language: \n"
+"PO-Revision-Date: 2015-10-12 10:14+0000\n"
+"Last-Translator: Dimitriy Ryazantcev <DJm00n@mail.ru>\n"
+"Language-Team: Russian (http://www.transifex.com/djm00n/git-po-ru/language/ru/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
 
 #: gitk:140
 msgid "Couldn't get list of unmerged files:"
@@ -20,15 +26,15 @@ msgstr "Невозможно получить список файлов неза
 
 #: gitk:212 gitk:2381
 msgid "Color words"
-msgstr ""
+msgstr "Цветные слова"
 
 #: gitk:217 gitk:2381 gitk:8220 gitk:8253
 msgid "Markup words"
-msgstr ""
+msgstr "Помеченые слова"
 
 #: gitk:324
 msgid "Error parsing revisions:"
-msgstr "Ð\9eÑ\88ибка Ð² Ð¸Ð´ÐµÐ½Ñ\82иÑ\84икаÑ\82оÑ\80е Ð²ÐµÑ\80Ñ\81ии:"
+msgstr "Ð\9eÑ\88ибка Ð¿Ñ\80и Ñ\80азбоÑ\80е Ñ\80едакÑ\86ии:"
 
 #: gitk:380
 msgid "Error executing --argscmd command:"
@@ -36,17 +42,13 @@ msgstr "Ошибка выполнения команды заданной --args
 
 #: gitk:393
 msgid "No files selected: --merge specified but no files are unmerged."
-msgstr ""
-"Файлы не выбраны: указан --merge, но не было найдено ни одного файла где эта "
-"операция должна быть завершена."
+msgstr "Файлы не выбраны: указан --merge, но не было найдено ни одного файла где эта операция должна быть завершена."
 
 #: gitk:396
 msgid ""
 "No files selected: --merge specified but no unmerged files are within file "
 "limit."
-msgstr ""
-"Файлы не выбраны: указан --merge, но в рамках указанного ограничения на "
-"имена файлов нет ни одного где эта операция должна быть завершена."
+msgstr "Файлы не выбраны: указан --merge, но в рамках указанного ограничения на имена файлов нет ни одного где эта операция должна быть завершена."
 
 #: gitk:418 gitk:566
 msgid "Error executing git log:"
@@ -58,7 +60,7 @@ msgstr "Чтение"
 
 #: gitk:496 gitk:4525
 msgid "Reading commits..."
-msgstr "ЧÑ\82ение Ð²ÐµÑ\80Ñ\81ий..."
+msgstr "ЧÑ\82ение ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82ов..."
 
 #: gitk:499 gitk:1637 gitk:4528
 msgid "No commits selected"
@@ -74,7 +76,7 @@ msgstr "Ошибка обработки вывода команды git log:"
 
 #: gitk:1740
 msgid "No commit information available"
-msgstr "Нет информации о состоянии"
+msgstr "Нет информации о коммите"
 
 #: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521
 msgid "OK"
@@ -86,71 +88,71 @@ msgid "Cancel"
 msgstr "Отмена"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Обновить"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Перечитать"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Обновить список ссылок"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Список ссылок"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Запустить git gui"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Завершить"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Файл"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Настройки"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Редактировать"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Новое представление..."
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Редактировать представление..."
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Удалить представление"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Все файлы"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Представление"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "О gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Назначения клавиатуры"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Подсказка"
 
 #: gitk:2185 gitk:8652
@@ -167,7 +169,7 @@ msgstr "Поиск"
 
 #: gitk:2295
 msgid "commit"
-msgstr "состояние"
+msgstr "коммит"
 
 #: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827
 #: gitk:6912
@@ -184,7 +186,7 @@ msgstr "добавив/удалив строку:"
 
 #: gitk:2304 gitk:4779
 msgid "changing lines matching:"
-msgstr ""
+msgstr "изменяя совпадающие строки:"
 
 #: gitk:2313 gitk:2315 gitk:4766
 msgid "Exact"
@@ -217,7 +219,7 @@ msgstr "Автор"
 
 #: gitk:2319 gitk:4871 gitk:6786 gitk:7326
 msgid "Committer"
-msgstr "СоÑ\85Ñ\80анивÑ\88ий Ñ\81оÑ\81Ñ\82оÑ\8fние"
+msgstr "Ð\9aоммиÑ\82еÑ\80"
 
 #: gitk:2350
 msgid "Search"
@@ -245,7 +247,7 @@ msgstr "Игнорировать пробелы"
 
 #: gitk:2378 gitk:2380 gitk:7959 gitk:8206
 msgid "Line diff"
-msgstr ""
+msgstr "Изменения строк"
 
 #: gitk:2445
 msgid "Patch"
@@ -257,11 +259,11 @@ msgstr "Файлы"
 
 #: gitk:2617 gitk:2637
 msgid "Diff this -> selected"
-msgstr "Сравнить это состояние с выделенным"
+msgstr "Сравнить этот коммит с выделенным"
 
 #: gitk:2618 gitk:2638
 msgid "Diff selected -> this"
-msgstr "Сравнить выделенное с этим состоянием"
+msgstr "Сравнить выделенный с этим коммитом"
 
 #: gitk:2619 gitk:2639
 msgid "Make patch"
@@ -273,63 +275,59 @@ msgstr "Создать метку"
 
 #: gitk:2621 gitk:9371
 msgid "Write commit to file"
-msgstr "СоÑ\85Ñ\80аниÑ\82Ñ\8c Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f в файл"
+msgstr "СоÑ\85Ñ\80аниÑ\82Ñ\8c ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82 в файл"
 
 #: gitk:2622 gitk:9428
 msgid "Create new branch"
-msgstr "СоздаÑ\82Ñ\8c Ð²ÐµÑ\82вÑ\8c"
+msgstr "СоздаÑ\82Ñ\8c Ð²ÐµÑ\82кÑ\83"
 
 #: gitk:2623
 msgid "Cherry-pick this commit"
-msgstr "СкопиÑ\80оваÑ\82Ñ\8c Ñ\8dÑ\82о Ñ\81оÑ\81Ñ\82оÑ\8fние"
+msgstr "Ð\9eÑ\82боÑ\80 Ð»Ñ\83Ñ\87Ñ\88его Ð´Ð»Ñ\8f Ñ\8dÑ\82ого ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82а"
 
 #: gitk:2624
 msgid "Reset HEAD branch to here"
-msgstr "Установить HEAD на это состояние"
+msgstr "Установить HEAD на этот коммит"
 
 #: gitk:2625
-#, fuzzy
 msgid "Mark this commit"
-msgstr "СкопиÑ\80оваÑ\82Ñ\8c Ñ\8dÑ\82о Ñ\81оÑ\81Ñ\82оÑ\8fние"
+msgstr "Ð\9fомеÑ\82иÑ\82Ñ\8c Ñ\8dÑ\82оÑ\82 ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82"
 
 #: gitk:2626
 msgid "Return to mark"
-msgstr ""
+msgstr "Вернуться на пометку"
 
 #: gitk:2627
 msgid "Find descendant of this and mark"
-msgstr ""
+msgstr "Найти и пометить потомка этого коммита"
 
 #: gitk:2628
 msgid "Compare with marked commit"
-msgstr ""
+msgstr "Сравнить с помеченным коммитом"
 
 #: gitk:2629 gitk:2640
-#, fuzzy
 msgid "Diff this -> marked commit"
-msgstr "Сравнить это состояние с выделенным"
+msgstr "Сравнить выделенное с помеченным коммитом"
 
 #: gitk:2630 gitk:2641
-#, fuzzy
 msgid "Diff marked commit -> this"
-msgstr "СÑ\80авниÑ\82Ñ\8c Ð²Ñ\8bделенное Ñ\81 Ñ\8dÑ\82им Ñ\81оÑ\81Ñ\82оÑ\8fнием"
+msgstr "СÑ\80авниÑ\82Ñ\8c Ð¿Ð¾Ð¼ÐµÑ\87еннÑ\8bй Ñ\81 Ñ\8dÑ\82им ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82ом"
 
 #: gitk:2631
-#, fuzzy
 msgid "Revert this commit"
-msgstr "СкопиÑ\80оваÑ\82Ñ\8c Ñ\8dÑ\82о Ñ\81оÑ\81Ñ\82оÑ\8fние"
+msgstr "Ð\92озвÑ\80аÑ\82 Ñ\8dÑ\82ого ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82а"
 
 #: gitk:2647
 msgid "Check out this branch"
-msgstr "Ð\9fеÑ\80ейÑ\82и Ð½Ð° Ñ\8dÑ\82Ñ\83 Ð²ÐµÑ\82вÑ\8c"
+msgstr "Ð\9fеÑ\80ейÑ\82и Ð½Ð° Ñ\8dÑ\82Ñ\83 Ð²ÐµÑ\82кÑ\83"
 
 #: gitk:2648
 msgid "Remove this branch"
-msgstr "УдалиÑ\82Ñ\8c Ñ\8dÑ\82Ñ\83 Ð²ÐµÑ\82вÑ\8c"
+msgstr "УдалиÑ\82Ñ\8c Ñ\8dÑ\82Ñ\83 Ð²ÐµÑ\82кÑ\83"
 
 #: gitk:2649
 msgid "Copy branch name"
-msgstr ""
+msgstr "Копировать имя ветки"
 
 #: gitk:2656
 msgid "Highlight this too"
@@ -345,11 +343,11 @@ msgstr "Программа сравнения"
 
 #: gitk:2659
 msgid "Blame parent commit"
-msgstr "Ð\90нноÑ\82иÑ\80оваÑ\82Ñ\8c Ñ\80одиÑ\82елÑ\8cÑ\81кое Ñ\81оÑ\81Ñ\82оÑ\8fние"
+msgstr "Ð\90вÑ\82оÑ\80Ñ\8b Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ñ\80одиÑ\82елÑ\8cÑ\81кого ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82а"
 
 #: gitk:2660
 msgid "Copy path"
-msgstr ""
+msgstr "Копировать путь"
 
 #: gitk:2667
 msgid "Show origin of this line"
@@ -360,21 +358,14 @@ msgid "Run git gui blame on this line"
 msgstr "Запустить git gui blame для этой строки"
 
 #: gitk:3014
-#, fuzzy
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
 "\n"
-"Copyright © 2005-2014 Paul Mackerras\n"
+"Copyright  2005-2014 Paul Mackerras\n"
 "\n"
 "Use and redistribute under the terms of the GNU General Public License"
-msgstr ""
-"\n"
-"Gitk - программа просмотра истории репозиториев Git\n"
-"\n"
-"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
-"\n"
-"Использование и распространение согласно условиям GNU General Public License"
+msgstr "\nGitk - программа просмотра истории репозиториев git\n\n©  2005-2014 Paul Mackerras\n\nИспользование и распространение согласно условиям GNU General Public License"
 
 #: gitk:3022 gitk:3089 gitk:9857
 msgid "Close"
@@ -394,87 +385,84 @@ msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tЗавершить"
 
 #: gitk:3049
-#, fuzzy, tcl-format
+#, tcl-format
 msgid "<%s-W>\t\tClose window"
-msgstr "<%s-F>\t\tПоиск"
+msgstr "<%s-W>\t\tЗакрыть окно"
 
 #: gitk:3050
 msgid "<Home>\t\tMove to first commit"
-msgstr "<Home>\t\tПерейти к первому состоянию"
+msgstr "<Home>\t\tПерейти к первому коммиту"
 
 #: gitk:3051
 msgid "<End>\t\tMove to last commit"
-msgstr "<End>\t\tПерейти к последнему состоянию"
+msgstr "<End>\t\tПерейти к последнему коммиту"
 
 #: gitk:3052
-#, fuzzy
 msgid "<Up>, p, k\tMove up one commit"
-msgstr "<Up>, p, i\tПерейти к следующему состоянию"
+msgstr "<Up>, p, k\tПерейти на один коммит вверх"
 
 #: gitk:3053
-#, fuzzy
 msgid "<Down>, n, j\tMove down one commit"
-msgstr "<Down>, n, k\tПерейти к предыдущему состоянию"
+msgstr "<Down>, n, j\tПерейти на один коммит вниз"
 
 #: gitk:3054
-#, fuzzy
 msgid "<Left>, z, h\tGo back in history list"
-msgstr "<Left>, z, j\tПоказать ранее посещённое состояние"
+msgstr "<Left>, z, h\tПоказать ранее посещённое состояние"
 
 #: gitk:3055
 msgid "<Right>, x, l\tGo forward in history list"
-msgstr "<Right>, x, l\tÐ\9fоказаÑ\82Ñ\8c Ñ\81ледÑ\83Ñ\8eÑ\89ее Ð¿Ð¾Ñ\81еÑ\89Ñ\91нное Ñ\81оÑ\81Ñ\82оÑ\8fние"
+msgstr "<Right>, x, l\tÐ\9fоказаÑ\82Ñ\8c Ñ\81ледÑ\83Ñ\8eÑ\89ий Ð¿Ð¾Ñ\81еÑ\89Ñ\91ннÑ\8bй ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82"
 
 #: gitk:3056
 #, tcl-format
 msgid "<%s-n>\tGo to n-th parent of current commit in history list"
-msgstr ""
+msgstr "<%s-n>\tПерейти на n родителя от текущего коммита"
 
 #: gitk:3057
 msgid "<PageUp>\tMove up one page in commit list"
-msgstr "<PageUp>\tПерейти на страницу выше в списке состояний"
+msgstr "<PageUp>\tПерейти на страницу выше в списке коммитов"
 
 #: gitk:3058
 msgid "<PageDown>\tMove down one page in commit list"
-msgstr "<PageDown>\tПерейти на страницу ниже в списке состояний"
+msgstr "<PageDown>\tПерейти на страницу ниже в списке коммитов"
 
 #: gitk:3059
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
-msgstr "<%s-Home>\tÐ\9fоказаÑ\82Ñ\8c Ð½Ð°Ñ\87ало Ñ\81пиÑ\81ка Ñ\81оÑ\81Ñ\82оÑ\8fний"
+msgstr "<%s-Home>\tÐ\9fеÑ\80ейÑ\82и Ð½Ð° Ð½Ð°Ñ\87ало Ñ\81пиÑ\81ка ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82ов"
 
 #: gitk:3060
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
-msgstr "<%s-End>\tÐ\9fоказаÑ\82Ñ\8c ÐºÐ¾Ð½ÐµÑ\86 Ñ\81пиÑ\81ка Ñ\81оÑ\81Ñ\82оÑ\8fний"
+msgstr "<%s-End>\tÐ\9fеÑ\80ейÑ\82и Ð½Ð° ÐºÐ¾Ð½ÐµÑ\86 Ñ\81пиÑ\81ка ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82ов"
 
 #: gitk:3061
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
-msgstr "<%s-Up>\tПровернуть список состояний вверх"
+msgstr "<%s-Up>\tПровернуть список коммитов вверх"
 
 #: gitk:3062
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
-msgstr "<%s-Down>\tПровернуть список состояний вниз"
+msgstr "<%s-Down>\tПровернуть список коммитов вниз"
 
 #: gitk:3063
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
-msgstr "<%s-PageUp>\tПровернуть список состояний на страницу вверх"
+msgstr "<%s-PageUp>\tПровернуть список коммитов на страницу вверх"
 
 #: gitk:3064
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
-msgstr "<%s-PageDown>\tПровернуть список состояний на страницу вниз"
+msgstr "<%s-PageDown>\tПровернуть список коммитов на страницу вниз"
 
 #: gitk:3065
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
-msgstr "<Shift-Up>\tПоиск в обратном порядке (вверх, среди новых состояний)"
+msgstr "<Shift-Up>\tПоиск в обратном порядке (вверх, среди новых коммитов)"
 
 #: gitk:3066
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
-msgstr "<Shift-Down>\tПоиск (вниз, среди старых состояний)"
+msgstr "<Shift-Down>\tПоиск (вниз, среди старых коммитов)"
 
 #: gitk:3067
 msgid "<Delete>, b\tScroll diff view up one page"
@@ -504,16 +492,15 @@ msgstr "<%s-F>\t\tПоиск"
 #: gitk:3073
 #, tcl-format
 msgid "<%s-G>\t\tMove to next find hit"
-msgstr "<%s-G>\t\tПерейти к следующему найденному состоянию"
+msgstr "<%s-G>\t\tПерейти к следующему найденному коммиту"
 
 #: gitk:3074
 msgid "<Return>\tMove to next find hit"
-msgstr "<Return>\tПерейти к следующему найденному состоянию"
+msgstr "<Return>\tПерейти к следующему найденному коммиту"
 
 #: gitk:3075
-#, fuzzy
 msgid "g\t\tGo to commit"
-msgstr "<End>\t\tПерейти к последнему состоянию"
+msgstr "g\t\tПерейти на коммит"
 
 #: gitk:3076
 msgid "/\t\tFocus the search box"
@@ -521,7 +508,7 @@ msgstr "/\t\tПерейти к полю поиска"
 
 #: gitk:3077
 msgid "?\t\tMove to previous find hit"
-msgstr "?\t\tПерейти к предыдущему найденному состоянию"
+msgstr "?\t\tПерейти к предыдущему найденному коммиту"
 
 #: gitk:3078
 msgid "f\t\tScroll diff view to next file"
@@ -569,7 +556,7 @@ msgstr "Ошибка создания временного каталога %s:"
 #: gitk:3572
 #, tcl-format
 msgid "Error getting \"%s\" from %s:"
-msgstr "Ошибка получения \"%s\" из %s:"
+msgstr "Ошибка получения «%s» из %s:"
 
 #: gitk:3635
 msgid "command failed:"
@@ -577,7 +564,7 @@ msgstr "ошибка выполнения команды:"
 
 #: gitk:3784
 msgid "No such commit"
-msgstr "СоÑ\81Ñ\82оÑ\8fние Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾"
+msgstr "Ð\9aоммиÑ\82 Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½"
 
 #: gitk:3798
 msgid "git gui blame: command failed:"
@@ -610,8 +597,7 @@ msgstr "Ошибка выполнения git blame: %s"
 #: gitk:3925
 #, tcl-format
 msgid "That line comes from commit %s,  which is not in this view"
-msgstr ""
-"Эта строка принадлежит состоянию %s, которое не показано в этом представлении"
+msgstr "Эта строка принадлежит коммиту %s, который не показан в этом представлении"
 
 #: gitk:3939
 msgid "External diff viewer failed:"
@@ -627,103 +613,97 @@ msgstr "Запомнить представление"
 
 #: gitk:4075
 msgid "References (space separated list):"
-msgstr ""
+msgstr "Ссылки (разделённые пробелом):"
 
 #: gitk:4076
 msgid "Branches & tags:"
-msgstr ""
+msgstr "Ветки и метки"
 
 #: gitk:4077
-#, fuzzy
 msgid "All refs"
-msgstr "Ð\92Ñ\81е Ñ\84айлÑ\8b"
+msgstr "Ð\92Ñ\81е Ñ\81Ñ\81Ñ\8bлки"
 
 #: gitk:4078
 msgid "All (local) branches"
-msgstr ""
+msgstr "Все (локальные) ветки"
 
 #: gitk:4079
 msgid "All tags"
-msgstr ""
+msgstr "Все метки"
 
 #: gitk:4080
 msgid "All remote-tracking branches"
-msgstr ""
+msgstr "Все внешние отслеживаемые ветки"
 
 #: gitk:4081
 msgid "Commit Info (regular expressions):"
-msgstr ""
+msgstr "Информация о коммите (регулярные выражения):"
 
 #: gitk:4082
-#, fuzzy
 msgid "Author:"
-msgstr "Автор"
+msgstr "Автор:"
 
 #: gitk:4083
-#, fuzzy
 msgid "Committer:"
-msgstr "СоÑ\85Ñ\80анивÑ\88ий Ñ\81оÑ\81Ñ\82оÑ\8fние"
+msgstr "Ð\9aоммиÑ\82еÑ\80:"
 
 #: gitk:4084
 msgid "Commit Message:"
-msgstr ""
+msgstr "Сообщение коммита:"
 
 #: gitk:4085
 msgid "Matches all Commit Info criteria"
-msgstr ""
+msgstr "Совпадает со всеми условиями информации о коммите"
 
 #: gitk:4086
 msgid "Matches no Commit Info criteria"
-msgstr ""
+msgstr "Не совпадает с условиями информации о коммите"
 
 #: gitk:4087
 msgid "Changes to Files:"
-msgstr ""
+msgstr "Изменения файлов:"
 
 #: gitk:4088
 msgid "Fixed String"
-msgstr ""
+msgstr "Обычная строка"
 
 #: gitk:4089
 msgid "Regular Expression"
-msgstr ""
+msgstr "Регулярное выражение:"
 
 #: gitk:4090
-#, fuzzy
 msgid "Search string:"
-msgstr "Ð\9fоиÑ\81к"
+msgstr "СÑ\82Ñ\80ока Ð´Ð»Ñ\8f Ð¿Ð¾Ð¸Ñ\81ка:"
 
 #: gitk:4091
 msgid ""
 "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
 "15:27:38\"):"
-msgstr ""
+msgstr "Даты коммита («2 недели назад», «2009-03-17 15:27:38», «17 марта 2009 15:27:38»):"
 
 #: gitk:4092
-#, fuzzy
 msgid "Since:"
 msgstr "С даты:"
 
 #: gitk:4093
-#, fuzzy
 msgid "Until:"
 msgstr "По дату:"
 
 #: gitk:4094
 msgid "Limit and/or skip a number of revisions (positive integer):"
-msgstr ""
+msgstr "Ограничить и/или пропустить количество редакций (положительное число):"
 
 #: gitk:4095
 msgid "Number to show:"
-msgstr ""
+msgstr "Показать количество:"
 
 #: gitk:4096
 msgid "Number to skip:"
-msgstr ""
+msgstr "Пропустить количество:"
 
 #: gitk:4097
 msgid "Miscellaneous options:"
-msgstr ""
+msgstr "Различные опции:"
 
 #: gitk:4098
 msgid "Strictly sort by date"
@@ -731,7 +711,7 @@ msgstr "Строгая сортировка по дате"
 
 #: gitk:4099
 msgid "Mark branch sides"
-msgstr "Ð\9eÑ\82меÑ\82иÑ\82Ñ\8c Ñ\81Ñ\82оÑ\80онÑ\8b Ð²ÐµÑ\82вей"
+msgstr "Ð\9eÑ\82меÑ\82иÑ\82Ñ\8c Ñ\81Ñ\82оÑ\80онÑ\8b Ð²ÐµÑ\82ок"
 
 #: gitk:4100
 msgid "Limit to first parent"
@@ -739,12 +719,11 @@ msgstr "Ограничить первым предком"
 
 #: gitk:4101
 msgid "Simple history"
-msgstr ""
+msgstr "Упрощенная история"
 
 #: gitk:4102
-#, fuzzy
 msgid "Additional arguments to git log:"
-msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\81оÑ\81Ñ\82оÑ\8fниÑ\8f (аÑ\80гÑ\83менÑ\82Ñ\8b Ð´Ð»Ñ\8f git-log):"
+msgstr "Ð\94ополниÑ\82елÑ\8cнÑ\8bе Ð°Ñ\80гÑ\83менÑ\82Ñ\8b Ð´Ð»Ñ\8f git log:"
 
 #: gitk:4103
 msgid "Enter files and directories to include, one per line:"
@@ -752,21 +731,19 @@ msgstr "Файлы и каталоги для ограничения истор
 
 #: gitk:4104
 msgid "Command to generate more commits to include:"
-msgstr "Дополнительная команда для списка состояний:"
+msgstr "Дополнительная команда для списка коммитов:"
 
 #: gitk:4228
 msgid "Gitk: edit view"
-msgstr ""
+msgstr "Gitk: изменить представление"
 
 #: gitk:4236
-#, fuzzy
 msgid "-- criteria for selecting revisions"
-msgstr "Ошибка в идентификаторе версии:"
+msgstr "— критерий поиска редакций"
 
 #: gitk:4241
-#, fuzzy
 msgid "View Name"
-msgstr "Ð\9fÑ\80едÑ\81Ñ\82авление"
+msgstr "Ð\98мÑ\8f Ð¿Ñ\80едÑ\81Ñ\82авлениÑ\8f"
 
 #: gitk:4316
 msgid "Apply (F5)"
@@ -774,7 +751,7 @@ msgstr "Применить (F5)"
 
 #: gitk:4354
 msgid "Error in commit selection arguments:"
-msgstr "Ошибка в параметрах выбора состояний:"
+msgstr "Ошибка в параметрах выбора коммитов:"
 
 #: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374
 msgid "None"
@@ -798,23 +775,23 @@ msgstr "Не предок"
 
 #: gitk:5324
 msgid "Local changes checked in to index but not committed"
-msgstr "Ð\98зменениÑ\8f Ð·Ð°Ñ\80егиÑ\81Ñ\82Ñ\80иÑ\80ованнÑ\8bе Ð² Ð¸Ð½Ð´ÐµÐºÑ\81е, Ð½Ð¾ Ð½Ðµ Ñ\81оÑ\85Ñ\80анÑ\91ннÑ\8bе"
+msgstr "Ð\9fÑ\80оиндекÑ\81иÑ\80ованнÑ\8bе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f"
 
 #: gitk:5360
 msgid "Local uncommitted changes, not checked in to index"
-msgstr "Ð\98зменениÑ\8f Ð² Ñ\80абоÑ\87ем ÐºÐ°Ñ\82алоге, Ð½Ðµ Ð·Ð°Ñ\80егиÑ\81Ñ\82Ñ\80иÑ\80ованнÑ\8bе Ð² Ð¸Ð½Ð´ÐµÐºÑ\81е"
+msgstr "Ð\9dепÑ\80оиндекÑ\81иÑ\80ованнÑ\8bе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f"
 
 #: gitk:7134
 msgid "and many more"
-msgstr ""
+msgstr "и многое другое"
 
 #: gitk:7137
 msgid "many"
-msgstr ""
+msgstr "много"
 
 #: gitk:7328
 msgid "Tags:"
-msgstr "Таги:"
+msgstr "Ð\9cеÑ\82ки:"
 
 #: gitk:7345 gitk:7351 gitk:8825
 msgid "Parent"
@@ -826,7 +803,7 @@ msgstr "Потомок"
 
 #: gitk:7365
 msgid "Branch"
-msgstr "Ð\92еÑ\82вÑ\8c"
+msgstr "Ð\92еÑ\82ка"
 
 #: gitk:7368
 msgid "Follows"
@@ -851,9 +828,9 @@ msgid "Short SHA1 id %s is ambiguous"
 msgstr "Сокращённый SHA1 идентификатор %s неоднозначен"
 
 #: gitk:8678
-#, fuzzy, tcl-format
+#, tcl-format
 msgid "Revision %s is not known"
-msgstr "SHA1 идентификатор %s не найден"
+msgstr "Редакция %s не найдена"
 
 #: gitk:8688
 #, tcl-format
@@ -863,7 +840,7 @@ msgstr "SHA1 идентификатор %s не найден"
 #: gitk:8690
 #, tcl-format
 msgid "Revision %s is not in the current view"
-msgstr ""
+msgstr "Редакция %s не найдена в текущем представлении"
 
 #: gitk:8832 gitk:8847
 msgid "Date"
@@ -876,62 +853,60 @@ msgstr "Потомки"
 #: gitk:8898
 #, tcl-format
 msgid "Reset %s branch to here"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ð²ÐµÑ\82вÑ\8c %s Ð½Ð° Ñ\8dÑ\82о Ñ\81оÑ\81Ñ\82оÑ\8fние"
+msgstr "СбÑ\80оÑ\81иÑ\82Ñ\8c Ð²ÐµÑ\82кÑ\83 %s Ð½Ð° Ñ\8dÑ\82оÑ\82 ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82"
 
 #: gitk:8900
 msgid "Detached head: can't reset"
-msgstr "СоÑ\81Ñ\82оÑ\8fние Ð½Ðµ Ð¿Ñ\80инадлежиÑ\82 Ð½Ð¸ Ð¾Ð´Ð½Ð¾Ð¹ Ð²ÐµÑ\82ви, Ð¿ÐµÑ\80еÑ\85од Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶ÐµÐ½"
+msgstr "Ð\9aоммиÑ\82 Ð½Ðµ Ð¿Ñ\80инадлежиÑ\82 Ð½Ð¸ Ð¾Ð´Ð½Ð¾Ð¹ Ð²ÐµÑ\82ке, Ñ\81бÑ\80оÑ\81иÑ\82Ñ\8c Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾"
 
 #: gitk:9005 gitk:9011
 msgid "Skipping merge commit "
-msgstr ""
+msgstr "Пропускаю коммит-слияние"
 
 #: gitk:9020 gitk:9025
-#, fuzzy
 msgid "Error getting patch ID for "
-msgstr "Ð\9eÑ\88ибка Ñ\81озданиÑ\8f Ð¿Ð°Ñ\82Ñ\87а:"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82Ñ\8c Ð¸Ð´ÐµÐ½Ñ\82иÑ\84икаÑ\82оÑ\80 Ð¿Ð°Ñ\82Ñ\87а Ð´Ð»Ñ\8f "
 
 #: gitk:9021 gitk:9026
 msgid " - stopping\n"
-msgstr ""
+msgstr " — останов\n"
 
 #: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065
-#, fuzzy
 msgid "Commit "
-msgstr "состояние"
+msgstr "Коммит"
 
 #: gitk:9035
 msgid ""
 " is the same patch as\n"
 "       "
-msgstr ""
+msgstr " такой же патч, как и\n       "
 
 #: gitk:9043
 msgid ""
 " differs from\n"
 "       "
-msgstr ""
+msgstr " отличается от\n       "
 
 #: gitk:9045
 msgid ""
 "Diff of commits:\n"
 "\n"
-msgstr ""
+msgstr "Различия коммитов:\n\n"
 
 #: gitk:9057 gitk:9066
 #, tcl-format
 msgid " has %s children - stopping\n"
-msgstr ""
+msgstr " является %s потомком — останов\n"
 
 #: gitk:9085
-#, fuzzy, tcl-format
+#, tcl-format
 msgid "Error writing commit to file: %s"
-msgstr "Ð\9eÑ\88ибка Ñ\81оÑ\85Ñ\80анениÑ\8f Ñ\81оÑ\81Ñ\82оÑ\8fниÑ\8f:"
+msgstr "Ð\9fÑ\80оизоÑ\88ла Ð¾Ñ\88ибка Ð¿Ñ\80и Ð·Ð°Ð¿Ð¸Ñ\81и ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82а Ð² Ñ\84айл: %s"
 
 #: gitk:9091
-#, fuzzy, tcl-format
+#, tcl-format
 msgid "Error diffing commits: %s"
-msgstr "Ð\9eÑ\88ибка Ñ\81оÑ\85Ñ\80анениÑ\8f Ñ\81оÑ\81Ñ\82оÑ\8fниÑ\8f:"
+msgstr "Ð\9fÑ\80оизоÑ\88ла Ð¾Ñ\88ибка Ð¿Ñ\80и Ð²Ñ\8bводе Ñ\80азлиÑ\87ий ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82ов: %s"
 
 #: gitk:9137
 msgid "Top"
@@ -983,12 +958,11 @@ msgstr "Имя метки:"
 
 #: gitk:9268
 msgid "Tag message is optional"
-msgstr ""
+msgstr "Описание метки указывать не обязательно"
 
 #: gitk:9270
-#, fuzzy
 msgid "Tag message:"
-msgstr "Ð\98мÑ\8f метки:"
+msgstr "Ð\9eпиÑ\81ание метки:"
 
 #: gitk:9274 gitk:9439
 msgid "Create"
@@ -1001,7 +975,7 @@ msgstr "Не задано имя метки"
 #: gitk:9296
 #, tcl-format
 msgid "Tag \"%s\" already exists"
-msgstr "Метка \"%s\" уже существует"
+msgstr "Метка «%s» уже существует"
 
 #: gitk:9306
 msgid "Error creating tag:"
@@ -1017,7 +991,7 @@ msgstr "Запись"
 
 #: gitk:9408
 msgid "Error writing commit:"
-msgstr "Ð\9eÑ\88ибка Ñ\81оÑ\85Ñ\80анениÑ\8f Ñ\81оÑ\81Ñ\82оÑ\8fниÑ\8f:"
+msgstr "Ð\9fÑ\80оизоÑ\88ла Ð¾Ñ\88ибка Ð¿Ñ\80и Ð·Ð°Ð¿Ð¸Ñ\81и ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82а:"
 
 #: gitk:9435
 msgid "Name:"
@@ -1025,17 +999,17 @@ msgstr "Имя:"
 
 #: gitk:9458
 msgid "Please specify a name for the new branch"
-msgstr "УкажиÑ\82е Ð¸Ð¼Ñ\8f Ð´Ð»Ñ\8f Ð½Ð¾Ð²Ð¾Ð¹ Ð²ÐµÑ\82ви"
+msgstr "УкажиÑ\82е Ð¸Ð¼Ñ\8f Ð´Ð»Ñ\8f Ð½Ð¾Ð²Ð¾Ð¹ Ð²ÐµÑ\82ки"
 
 #: gitk:9463
 #, tcl-format
 msgid "Branch '%s' already exists. Overwrite?"
-msgstr "Ð\92еÑ\82вÑ\8c '%s' уже существует. Переписать?"
+msgstr "Ð\92еÑ\82ка Â«%s» уже существует. Переписать?"
 
 #: gitk:9530
 #, tcl-format
 msgid "Commit %s is already included in branch %s -- really re-apply it?"
-msgstr "СоÑ\81Ñ\82оÑ\8fние %s Ñ\83же Ð¿Ñ\80инадлежиÑ\82 Ð²ÐµÑ\82ви %s. Продолжить операцию?"
+msgstr "Ð\9aоммиÑ\82 %s Ñ\83же Ð²ÐºÐ»Ñ\8eÑ\87Ñ\91н Ð² Ð²ÐµÑ\82кÑ\83 %s. Продолжить операцию?"
 
 #: gitk:9535
 msgid "Cherry-picking"
@@ -1046,49 +1020,39 @@ msgstr "Копирование изменений"
 msgid ""
 "Cherry-pick failed because of local changes to file '%s'.\n"
 "Please commit, reset or stash your changes and try again."
-msgstr ""
-"Копирование невозможно из-за изменений в файле '%s'.\n"
-"Сохраните или отмените изменения и повторите операцию."
+msgstr "Отбор лучшего невозможен из-за изменений в файле «%s».\nЗакомитьте, сбросьте или спрячьте изменения и повторите операцию."
 
 #: gitk:9550
 msgid ""
 "Cherry-pick failed because of merge conflict.\n"
 "Do you wish to run git citool to resolve it?"
-msgstr ""
-"Копирование изменений невозможно из-за незавершённой операции слияния.\n"
-"Запустить git citool для завершения этой операции?"
+msgstr "Копирование изменений невозможно из-за незавершённой операции слияния.\nЗапустить git citool для завершения этой операции?"
 
 #: gitk:9566 gitk:9624
 msgid "No changes committed"
-msgstr "Изменения не сохранены"
+msgstr "Изменения не закоммичены"
 
 #: gitk:9593
-#, fuzzy, tcl-format
+#, tcl-format
 msgid "Commit %s is not included in branch %s -- really revert it?"
-msgstr "СоÑ\81Ñ\82оÑ\8fние %s Ñ\83же Ð¿Ñ\80инадлежиÑ\82 Ð²ÐµÑ\82ви %s. Продолжить операцию?"
+msgstr "Ð\9aоммиÑ\82 %s Ð½Ðµ Ð²ÐºÐ»Ñ\8eÑ\87Ñ\91н Ð² Ð²ÐµÑ\82кÑ\83 %s. Продолжить операцию?"
 
 #: gitk:9598
-#, fuzzy
 msgid "Reverting"
-msgstr "УÑ\81Ñ\82ановка"
+msgstr "Ð\92озвÑ\80аÑ\82 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹"
 
 #: 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 ""
-"Копирование невозможно из-за изменений в файле '%s'.\n"
-"Сохраните или отмените изменения и повторите операцию."
+msgstr "Возврат изменений коммита не удался из-за локальных изменений в указанных файлах: %s\nЗакомитьте, сбросьте или спрячьте изменения и повторите операцию."
 
 #: gitk:9610
-#, fuzzy
 msgid ""
 "Revert failed because of merge conflict.\n"
 " Do you wish to run git citool to resolve it?"
-msgstr ""
-"Копирование изменений невозможно из-за незавершённой операции слияния.\n"
-"Запустить git citool для завершения этой операции?"
+msgstr "Возврат изменений невозможен из-за незавершённой операции слияния.\nЗапустить git citool для завершения этой операции?"
 
 #: gitk:9653
 msgid "Confirm reset"
@@ -1097,7 +1061,7 @@ msgstr "Подтвердите операцию перехода"
 #: gitk:9655
 #, tcl-format
 msgid "Reset branch %s to %s?"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ð²ÐµÑ\82вÑ\8c %s Ð½Ð° Ñ\81оÑ\81Ñ\82оÑ\8fние %s?"
+msgstr "СбÑ\80оÑ\81иÑ\82Ñ\8c Ð²ÐµÑ\82кÑ\83 %s Ð½Ð° ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82 %s?"
 
 #: gitk:9657
 msgid "Reset type:"
@@ -1115,13 +1079,11 @@ msgstr "Смешанный: оставить рабочий каталог не
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
-msgstr ""
-"Жесткий: переписать индекс и рабочий каталог\n"
-"(все изменения в рабочем каталоге будут потеряны)"
+msgstr "Жесткий: переписать индекс и рабочий каталог\n(все изменения в рабочем каталоге будут потеряны)"
 
 #: gitk:9683
 msgid "Resetting"
-msgstr "УÑ\81Ñ\82ановка"
+msgstr "СбÑ\80оÑ\81"
 
 #: gitk:9743
 msgid "Checking out"
@@ -1129,21 +1091,19 @@ msgstr "Переход"
 
 #: gitk:9796
 msgid "Cannot delete the currently checked-out branch"
-msgstr "Ð\90кÑ\82ивнаÑ\8f Ð²ÐµÑ\82вÑ\8c не может быть удалена"
+msgstr "Ð\90кÑ\82ивнаÑ\8f Ð²ÐµÑ\82ка не может быть удалена"
 
 #: gitk:9802
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
 "Really delete branch %s?"
-msgstr ""
-"Состояния ветви %s больше не принадлежат никакой другой ветви.\n"
-"Действительно удалить ветвь %s?"
+msgstr "Коммиты из ветки %s не принадлежат больше никакой другой ветке.\nДействительно удалить ветку %s?"
 
 #: gitk:9833
 #, tcl-format
 msgid "Tags and heads: %s"
-msgstr "Ð\9cеÑ\82ки Ð¸ Ð²ÐµÑ\82ви: %s"
+msgstr "Ð\9cеÑ\82ки Ð¸ Ð²ÐµÑ\82ки: %s"
 
 #: gitk:9850
 msgid "Filter"
@@ -1153,9 +1113,7 @@ msgstr "Фильтровать"
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
-msgstr ""
-"Ошибка чтения истории проекта; информация о ветвях и состояниях вокруг меток "
-"(до/после) может быть неполной."
+msgstr "Ошибка чтения истории проекта; информация о ветках и коммитах вокруг меток (до/после) может быть неполной."
 
 #: gitk:11123
 msgid "Tag"
@@ -1179,7 +1137,7 @@ msgstr "К"
 
 #: gitk:11348
 msgid "Commit list display options"
-msgstr "Параметры показа списка состояний"
+msgstr "Параметры показа списка коммитов"
 
 #: gitk:11351
 msgid "Maximum graph width (lines)"
@@ -1195,13 +1153,12 @@ msgid "Show local changes"
 msgstr "Показывать изменения в рабочем каталоге"
 
 #: gitk:11361
-#, fuzzy
 msgid "Auto-select SHA1 (length)"
-msgstr "Ð\92Ñ\8bделиÑ\82Ñ\8c SHA1"
+msgstr "Ð\90вÑ\82омаÑ\82иÑ\87еÑ\81ки Ð²Ñ\8bделиÑ\82Ñ\8c SHA1 (длинна)"
 
 #: gitk:11365
 msgid "Hide remote refs"
-msgstr ""
+msgstr "Скрыть внешние ссылки"
 
 #: gitk:11369
 msgid "Diff display options"
@@ -1212,13 +1169,12 @@ msgid "Tab spacing"
 msgstr "Ширина табуляции"
 
 #: gitk:11374
-#, fuzzy
 msgid "Display nearby tags/heads"
-msgstr "Показывать близкие метки"
+msgstr "Показывать близкие метки/ветки"
 
 #: gitk:11377
 msgid "Maximum # tags/heads to show"
-msgstr ""
+msgstr "Показывать максимальное количество меток/веток"
 
 #: gitk:11380
 msgid "Limit diffs to listed paths"
@@ -1237,21 +1193,20 @@ msgid "Choose..."
 msgstr "Выберите..."
 
 #: gitk:11395
-#, fuzzy
 msgid "General options"
-msgstr "СоздаÑ\82Ñ\8c Ð¿Ð°Ñ\82Ñ\87"
+msgstr "Ð\9eбÑ\89ие Ð¾Ð¿Ñ\86ии"
 
 #: gitk:11398
 msgid "Use themed widgets"
-msgstr ""
+msgstr "Использовать стили виджетов"
 
 #: gitk:11400
 msgid "(change requires restart)"
-msgstr ""
+msgstr "(изменение потребует перезапуск)"
 
 #: gitk:11402
 msgid "(currently unavailable)"
-msgstr ""
+msgstr "(недоступно в данный момент)"
 
 #: gitk:11413
 msgid "Colors: press to choose"
@@ -1259,12 +1214,11 @@ msgstr "Цвета: нажмите для выбора"
 
 #: gitk:11416
 msgid "Interface"
-msgstr ""
+msgstr "Интерфейс"
 
 #: gitk:11417
-#, fuzzy
 msgid "interface"
-msgstr "ШÑ\80иÑ\84Ñ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а"
+msgstr "инÑ\82еÑ\80Ñ\84ейÑ\81"
 
 #: gitk:11420
 msgid "Background"
@@ -1339,17 +1293,16 @@ msgid "Gitk preferences"
 msgstr "Настройки Gitk"
 
 #: gitk:11494
-#, fuzzy
 msgid "General"
-msgstr "СоздаÑ\82Ñ\8c"
+msgstr "Ð\9eбÑ\89ие"
 
 #: gitk:11495
 msgid "Colors"
-msgstr ""
+msgstr "Цвета"
 
 #: gitk:11496
 msgid "Fonts"
-msgstr ""
+msgstr "Шрифты"
 
 #: gitk:11546
 #, tcl-format
@@ -1360,9 +1313,7 @@ msgstr "Gitk: выберите цвет для %s"
 msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
-msgstr ""
-"К сожалению gitk не может работать с этой версий Tcl/Tk.\n"
-"Требуется как минимум Tcl/Tk 8.4."
+msgstr "К сожалению gitk не может работать с этой версий Tcl/Tk.\nТребуется как минимум Tcl/Tk 8.4."
 
 #: gitk:12269
 msgid "Cannot find a git repository here."
@@ -1371,38 +1322,8 @@ msgstr "Git-репозитарий не найден в текущем ката
 #: gitk:12316
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
-msgstr "Неоднозначный аргумент '%s': существует как версия и имя файла"
+msgstr "Неоднозначный аргумент «%s»: существует как редакция и как имя файла"
 
 #: gitk:12328
 msgid "Bad arguments to gitk:"
 msgstr "Неправильные аргументы для gitk:"
-
-#~ msgid "SHA1 ID: "
-#~ msgstr "SHA1:"
-
-#~ msgid "next"
-#~ msgstr "След."
-
-#~ msgid "prev"
-#~ msgstr "Пред."
-
-#~ msgid "Use all refs"
-#~ msgstr "Использовать все ветви"
-
-#~ msgid "Max count:"
-#~ msgstr "Макс. количество:"
-
-#~ msgid "Skip:"
-#~ msgstr "Пропустить:"
-
-#~ msgid "Name"
-#~ msgstr "Имя"
-
-#~ msgid "CDate"
-#~ msgstr "Дата ввода"
-
-#~ msgid "Tag/Head %s is not known"
-#~ msgstr "Метка или ветвь %s не найдена"
-
-#~ msgid "Cannot find the git directory \"%s\"."
-#~ msgstr "Git-репозитарий \"%s\" не найден."
index 0bd46d7881017506e1d5e8afc4a4225b0d840e2e..75317f43965ba4a6f9b173f476e13851ca069e52 100644 (file)
@@ -92,71 +92,71 @@ msgid "Cancel"
 msgstr "Avbryt"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Uppdatera"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Ladda om"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Läs om referenser"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Visa referenser"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Starta git gui"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Avsluta"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Arkiv"
 
 #: gitk:2080
-msgid "Preferences"
+msgid "&Preferences"
 msgstr "Inställningar"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Redigera"
 
 #: gitk:2084
-msgid "New view..."
+msgid "&New view..."
 msgstr "Ny vy..."
 
 #: gitk:2085
-msgid "Edit view..."
+msgid "&Edit view..."
 msgstr "Ändra vy..."
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Ta bort vy"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Alla filer"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Visa"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "Om gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Tangentbordsbindningar"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Hjälp"
 
 #: gitk:2185 gitk:8652
index 7133c422b7363b08fbb49fd6526c8db9af81b0eb..8966812368a626e8da9f42012b69f233b4181642 100644 (file)
@@ -1,14 +1,14 @@
 # Vietnamese translations for gitk package.
 # Bản dịch tiếng Việt cho gói gitk.
 # This file is distributed under the same license as the gitk package.
-# Trần Ngọc Quân <vnwildman@gmail.com>, 2013.
+# Trần Ngọc Quân <vnwildman@gmail.com>, 2013, 2015.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: gitk @@GIT_VERSION@@\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-05-17 14:32+1000\n"
-"PO-Revision-Date: 2013-12-14 14:40+0700\n"
+"PO-Revision-Date: 2015-09-15 07:33+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
 "Language: vi\n"
@@ -16,6 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 #: gitk:140
 msgid "Couldn't get list of unmerged files:"
@@ -60,7 +61,7 @@ msgstr "Đang đọc"
 
 #: gitk:496 gitk:4525
 msgid "Reading commits..."
-msgstr "Đang đọc các lần chuyển giao..."
+msgstr "Đang đọc các lần chuyển giao"
 
 #: gitk:499 gitk:1637 gitk:4528
 msgid "No commits selected"
@@ -88,71 +89,71 @@ msgid "Cancel"
 msgstr "Thôi"
 
 #: gitk:2069
-msgid "Update"
+msgid "&Update"
 msgstr "Cập nhật"
 
 #: gitk:2070
-msgid "Reload"
+msgid "&Reload"
 msgstr "Tải lại"
 
 #: gitk:2071
-msgid "Reread references"
+msgid "Reread re&ferences"
 msgstr "Đọc lại tham chiếu"
 
 #: gitk:2072
-msgid "List references"
+msgid "&List references"
 msgstr "Liệt kê các tham chiếu"
 
 #: gitk:2074
-msgid "Start git gui"
+msgid "Start git &gui"
 msgstr "Khởi chạy git gui"
 
 #: gitk:2076
-msgid "Quit"
+msgid "&Quit"
 msgstr "Thoát"
 
 #: gitk:2068
-msgid "File"
+msgid "&File"
 msgstr "Chính"
 
 #: gitk:2080
-msgid "Preferences"
-msgstr "Cá nhân hóa"
+msgid "&Preferences"
+msgstr "Tùy thích"
 
 #: gitk:2079
-msgid "Edit"
+msgid "&Edit"
 msgstr "Chỉnh sửa"
 
 #: gitk:2084
-msgid "New view..."
-msgstr "Thêm trình bày mới..."
+msgid "&New view..."
+msgstr "Thêm trình bày mới"
 
 #: gitk:2085
-msgid "Edit view..."
-msgstr "Sửa cách trình bày..."
+msgid "&Edit view..."
+msgstr "Sửa cách trình bày"
 
 #: gitk:2086
-msgid "Delete view"
+msgid "&Delete view"
 msgstr "Xóa cách trình bày"
 
 #: gitk:2088 gitk:4043
-msgid "All files"
+msgid "&All files"
 msgstr "Mọi tập tin"
 
 #: gitk:2083 gitk:4067
-msgid "View"
+msgid "&View"
 msgstr "Trình bày"
 
 #: gitk:2093 gitk:2103 gitk:3012
-msgid "About gitk"
+msgid "&About gitk"
 msgstr "Giới thiệu về gitk"
 
 #: gitk:2094 gitk:2108
-msgid "Key bindings"
+msgid "&Key bindings"
 msgstr "Tổ hợp phím"
 
 #: gitk:2092 gitk:2107
-msgid "Help"
+msgid "&Help"
 msgstr "Trợ giúp"
 
 #: gitk:2185 gitk:8652
@@ -319,7 +320,7 @@ msgstr "Hoàn lại lần chuyển giao này"
 
 #: gitk:2647
 msgid "Check out this branch"
-msgstr "Checkout nhánh này"
+msgstr "Lấy ra nhánh này"
 
 #: gitk:2648
 msgid "Remove this branch"
@@ -327,7 +328,7 @@ msgstr "Gỡ bỏ nhánh này"
 
 #: gitk:2649
 msgid "Copy branch name"
-msgstr ""
+msgstr "Chép tên nhánh"
 
 #: gitk:2656
 msgid "Highlight this too"
@@ -347,7 +348,7 @@ msgstr "Xem công trạng lần chuyển giao cha mẹ"
 
 #: gitk:2660
 msgid "Copy path"
-msgstr ""
+msgstr "Chép đường dẫn"
 
 #: gitk:2667
 msgid "Show origin of this line"
@@ -358,7 +359,6 @@ msgid "Run git gui blame on this line"
 msgstr "Chạy lệnh git gui blame cho dòng này"
 
 #: gitk:3014
-#, fuzzy
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
@@ -368,9 +368,9 @@ msgid ""
 "Use and redistribute under the terms of the GNU General Public License"
 msgstr ""
 "\n"
-"Gitk - phần mềm xem các lần chuyển giao dành cho git\n"
+"Gitk - ứng dụng để xem các lần chuyển giao dành cho git\n"
 "\n"
-"Bản quyền © 2005-2011 Paul Mackerras\n"
+"Bản quyền © 2005-2014 Paul Mackerras\n"
 "\n"
 "Dùng và phân phối lại phần mềm này theo các điều khoản của Giấy Phép Công GNU"
 
@@ -424,6 +424,7 @@ msgstr "<Right>, x, l\tDi chuyển tiếp trong danh sách lịch sử"
 #, tcl-format
 msgid "<%s-n>\tGo to n-th parent of current commit in history list"
 msgstr ""
+"<%s-n>\tĐến cha thứ n của lần chuyển giao hiện tại trong danh sách lịch sử"
 
 #: gitk:3057
 msgid "<PageUp>\tMove up one page in commit list"
@@ -507,9 +508,8 @@ msgid "<Return>\tMove to next find hit"
 msgstr "<Return>\t\tDi chuyển đến chỗ gặp kế tiếp"
 
 #: gitk:3075
-#, fuzzy
 msgid "g\t\tGo to commit"
-msgstr "<End>\t\tChuyển đến lần chuyển giao cuối"
+msgstr "g\t\tChuyển đến lần chuyển giao"
 
 #: gitk:3076
 msgid "/\t\tFocus the search box"
@@ -666,9 +666,8 @@ msgid "Matches all Commit Info criteria"
 msgstr "Khớp mọi điều kiện Thông tin Chuyển giao"
 
 #: gitk:4086
-#, fuzzy
 msgid "Matches no Commit Info criteria"
-msgstr "Khớp mọi điều kiện Thông tin Chuyển giao"
+msgstr "Khớp không điều kiện Thông tin Chuyển giao"
 
 #: gitk:4087
 msgid "Changes to Files:"
@@ -716,7 +715,7 @@ msgstr "Số lượng sẽ bỏ qua:"
 
 #: gitk:4097
 msgid "Miscellaneous options:"
-msgstr "Tuỳ chọn hỗn hợp:"
+msgstr "Tùy chọn hỗn hợp:"
 
 #: gitk:4098
 msgid "Strictly sort by date"
@@ -971,7 +970,7 @@ msgstr "Gặp lỗi khi tạo miếng vá:"
 
 #: gitk:9256 gitk:9373 gitk:9430
 msgid "ID:"
-msgstr "ID:"
+msgstr "Mã số:"
 
 #: gitk:9265
 msgid "Tag name:"
@@ -1186,7 +1185,7 @@ msgstr "Độ rộng biểu đồ tối đa (dòng)"
 #: gitk:11355
 #, no-tcl-format
 msgid "Maximum graph width (% of pane)"
-msgstr "Độ rộng biểu đồ tối đa (% của bảng)"
+msgstr "Độ rộng đồ thị tối đa (% của bảng)"
 
 #: gitk:11358
 msgid "Show local changes"
@@ -1194,7 +1193,7 @@ msgstr "Hiển thị các thay đổi nội bộ"
 
 #: gitk:11361
 msgid "Auto-select SHA1 (length)"
-msgstr "Tự chọn SHA1 (độ dài)"
+msgstr "Tự chọn (độ dài) SHA1"
 
 #: gitk:11365
 msgid "Hide remote refs"
@@ -1230,7 +1229,7 @@ msgstr "Công cụ so sánh từ bên ngoài"
 
 #: gitk:11390
 msgid "Choose..."
-msgstr "Chọn..."
+msgstr "Chọn"
 
 #: gitk:11395
 msgid "General options"
@@ -1354,6 +1353,8 @@ msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
 msgstr ""
+"Rất tiếc, gitk không thể chạy Tcl/Tk phiên bản này.\n"
+" Gitk cần ít nhất là Tcl/Tk 8.4."
 
 #: gitk:12269
 msgid "Cannot find a git repository here."
@@ -1366,7 +1367,7 @@ msgstr "Đối số “%s” chưa rõ ràng: vừa là điểm xét duyệt v
 
 #: gitk:12328
 msgid "Bad arguments to gitk:"
-msgstr "Đối số không hợp lệ cho gitk:"
+msgstr "Đối số cho gitk không hợp lệ:"
 
 #~ msgid "mc"
 #~ msgstr "mc"
index e9faaeaf2ab31413139dad17c6df1032e7e3cffa..4d3b7737a99de02c42945951e91b4d7ed865611d 100644 (file)
@@ -1421,11 +1421,15 @@ static CURL *setup_curl(struct imap_server_conf *srvc)
        curl_easy_setopt(curl, CURLOPT_PORT, server.port);
 
        if (server.auth_method) {
+#if LIBCURL_VERSION_NUM < 0x072200
+               warning("No LOGIN_OPTIONS support in this cURL version");
+#else
                struct strbuf auth = STRBUF_INIT;
                strbuf_addstr(&auth, "AUTH=");
                strbuf_addstr(&auth, server.auth_method);
                curl_easy_setopt(curl, CURLOPT_LOGIN_OPTIONS, auth.buf);
                strbuf_release(&auth);
+#endif
        }
 
        if (!server.use_ssl)
index e157ca6eb5a078f950d9bd6c746698be22fa651c..f289941f7e516be2f6265326188b3d8da70ef3aa 100644 (file)
@@ -1009,7 +1009,7 @@ void setup_mailinfo(struct mailinfo *mi)
        mi->header_stage = 1;
        mi->use_inbody_headers = 1;
        mi->content_top = mi->content;
-       git_config(git_mailinfo_config, &mi);
+       git_config(git_mailinfo_config, mi);
 }
 
 void clear_mailinfo(struct mailinfo *mi)
index a5e74d85fd9c82534cf437d3b615d02289ecd7ba..21e680a78e758eeaf03cf03a8b485095d96bcf5d 100644 (file)
@@ -1530,13 +1530,17 @@ static int read_sha1_strbuf(const unsigned char *sha1, struct strbuf *dst)
 }
 
 static int blob_unchanged(const unsigned char *o_sha,
+                         unsigned o_mode,
                          const unsigned char *a_sha,
+                         unsigned a_mode,
                          int renormalize, const char *path)
 {
        struct strbuf o = STRBUF_INIT;
        struct strbuf a = STRBUF_INIT;
        int ret = 0; /* assume changed for safety */
 
+       if (a_mode != o_mode)
+               return 0;
        if (sha_eq(o_sha, a_sha))
                return 1;
        if (!renormalize)
@@ -1722,8 +1726,8 @@ static int process_entry(struct merge_options *o,
        } else if (o_sha && (!a_sha || !b_sha)) {
                /* Case A: Deleted in one */
                if ((!a_sha && !b_sha) ||
-                   (!b_sha && blob_unchanged(o_sha, a_sha, normalize, path)) ||
-                   (!a_sha && blob_unchanged(o_sha, b_sha, normalize, path))) {
+                   (!b_sha && blob_unchanged(o_sha, o_mode, a_sha, a_mode, normalize, path)) ||
+                   (!a_sha && blob_unchanged(o_sha, o_mode, b_sha, b_mode, normalize, path))) {
                        /* Deleted in both or deleted in one and
                         * unchanged in the other */
                        if (a_sha)
index 5c8376e9789301b921188e3bf19fba85960a7967..e542ea7703a740916f8d2cac9176674782d37f61 100644 (file)
@@ -21,7 +21,7 @@ static int pack_revindex_hashsz;
 
 static int pack_revindex_ix(struct packed_git *p)
 {
-       unsigned long ui = (unsigned long)p;
+       unsigned long ui = (unsigned long)(intptr_t)p;
        int i;
 
        ui = ui ^ (ui >> 16); /* defeat structure alignment */
index 1194f10ed60f2bb476e1d95d0cc11b4ad4265c7f..e205dd2f689ee5aeafe6ea66343fd01b85d2e354 100644 (file)
@@ -1457,7 +1457,7 @@ static int cmp_ref_sorting(struct ref_sorting *s, struct ref_array_item *a, stru
                if (va->ul < vb->ul)
                        cmp = -1;
                else if (va->ul == vb->ul)
-                       cmp = 0;
+                       cmp = strcmp(a->refname, b->refname);
                else
                        cmp = 1;
        }
index fb161530cdd5e286716d45532c1d58da26250e22..10f1ffce0b00a7bef0b156678ab7c04431827f0e 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -1939,10 +1939,8 @@ int resolve_remote_symref(struct ref *ref, struct ref *list)
 static void unmark_and_free(struct commit_list *list, unsigned int mark)
 {
        while (list) {
-               struct commit_list *temp = list;
-               temp->item->object.flags &= ~mark;
-               list = temp->next;
-               free(temp);
+               struct commit *commit = pop_commit(&list);
+               commit->object.flags &= ~mark;
        }
 }
 
index 22364636d1456795dd858b8039da3b90d32c6633..0fbb6841bf14389148474bff7bd702f5ec02e558 100644 (file)
@@ -153,10 +153,7 @@ void mark_parents_uninteresting(struct commit *commit)
                commit_list_insert(l->item, &parents);
 
        while (parents) {
-               struct commit *commit = parents->item;
-               l = parents;
-               parents = parents->next;
-               free(l);
+               struct commit *commit = pop_commit(&parents);
 
                while (commit) {
                        /*
@@ -1102,14 +1099,10 @@ static int limit_list(struct rev_info *revs)
        }
 
        while (list) {
-               struct commit_list *entry = list;
-               struct commit *commit = list->item;
+               struct commit *commit = pop_commit(&list);
                struct object *obj = &commit->object;
                show_early_output_fn_t show;
 
-               list = list->next;
-               free(entry);
-
                if (commit == interesting_cache)
                        interesting_cache = NULL;
 
@@ -2733,10 +2726,7 @@ static void simplify_merges(struct rev_info *revs)
                yet_to_do = NULL;
                tail = &yet_to_do;
                while (list) {
-                       commit = list->item;
-                       next = list->next;
-                       free(list);
-                       list = next;
+                       commit = pop_commit(&list);
                        tail = simplify_one(revs, commit, tail);
                }
        }
@@ -2748,10 +2738,7 @@ static void simplify_merges(struct rev_info *revs)
        while (list) {
                struct merge_simplify_state *st;
 
-               commit = list->item;
-               next = list->next;
-               free(list);
-               list = next;
+               commit = pop_commit(&list);
                st = locate_simplify_state(revs, commit);
                if (st->simplified == commit)
                        tail = &commit_list_insert(commit, tail)->next;
@@ -3125,11 +3112,7 @@ static struct commit *get_revision_1(struct rev_info *revs)
                return NULL;
 
        do {
-               struct commit_list *entry = revs->commits;
-               struct commit *commit = entry->item;
-
-               revs->commits = entry->next;
-               free(entry);
+               struct commit *commit = pop_commit(&revs->commits);
 
                if (revs->reflog_info) {
                        save_parents(revs, commit);
index 50896ff1eb5ce3f216b31658b4a03d6e7fdc5adb..c5b31de9aa579dde37e5345d207995416f261eed 100644 (file)
@@ -2126,7 +2126,7 @@ static unsigned long pack_entry_hash(struct packed_git *p, off_t base_offset)
 {
        unsigned long hash;
 
-       hash = (unsigned long)p + (unsigned long)base_offset;
+       hash = (unsigned long)(intptr_t)p + (unsigned long)base_offset;
        hash += (hash >> 8) + (hash >> 16);
        return hash % MAX_DELTA_CACHE;
 }
index 4f9d66723670664fd8a15e271ed0cfc309324059..46be7897794ab8e350d64f00d3c11390fe993ad8 100644 (file)
--- a/shallow.c
+++ b/shallow.c
@@ -400,13 +400,9 @@ static void paint_down(struct paint_info *info, const unsigned char *sha1,
        commit_list_insert(c, &head);
        while (head) {
                struct commit_list *p;
-               struct commit *c = head->item;
+               struct commit *c = pop_commit(&head);
                uint32_t **refs = ref_bitmap_at(&info->ref_bitmap, c);
 
-               p = head;
-               head = head->next;
-               free(p);
-
                /* XXX check "UNINTERESTING" from pack bitmaps if available */
                if (c->object.flags & (SEEN | UNINTERESTING))
                        continue;
index 5879cfb158f0b581a54a56de5de44af5c2d0a700..88af54c633851d440f46e21d65b1362b6360d2bb 100644 (file)
@@ -130,6 +130,7 @@ static int add_submodule_odb(const char *path)
                goto done;
        }
        /* avoid adding it twice */
+       prepare_alt_odb();
        for (alt_odb = alt_odb_list; alt_odb; alt_odb = alt_odb->next)
                if (alt_odb->name - alt_odb->base == objects_directory.len &&
                                !strncmp(alt_odb->base, objects_directory.buf,
@@ -148,7 +149,6 @@ static int add_submodule_odb(const char *path)
 
        /* add possible alternates from the submodule */
        read_info_alternates(objects_directory.buf, 0);
-       prepare_alt_odb();
 done:
        strbuf_release(&objects_directory);
        return ret;
index e16b15d3e5784eb3c6423318142cb91fe3a58601..314c73c5a708fda8f39e7a86bf3db0329191d7a7 100755 (executable)
@@ -84,6 +84,8 @@ test_expect_success 'non-qualified update in subdir updates from the root' '
        (
                cd dir1 &&
                echo even more >>sub2 &&
+               git --literal-pathspecs add -u &&
+               echo even more >>sub2 &&
                git add -u
        ) &&
        : >expect &&
index fc8b59e7f7796c075b7fd03145e5f9c69625403b..6a5a3166b1823e751dfe19a28bf54c147dd798b3 100755 (executable)
@@ -14,6 +14,7 @@ test_expect_success setup '
                echo expect
                echo ignored
        ) >.gitignore &&
+       git --literal-pathspecs add --all &&
        >will-remove &&
        git add --all &&
        test_tick &&
index 82e18548c39817dec496766d2c8d500668fc4f76..6224187632b105edf1940023eba4a49523d92fe2 100755 (executable)
@@ -629,5 +629,35 @@ test_expect_failure 'merge-recursive rename vs. rename/symlink' '
        test_cmp expected actual
 '
 
+test_expect_success 'merging with triple rename across D/F conflict' '
+       git reset --hard HEAD &&
+       git checkout -b main &&
+       git rm -rf . &&
+
+       echo "just a file" >sub1 &&
+       mkdir -p sub2 &&
+       echo content1 >sub2/file1 &&
+       echo content2 >sub2/file2 &&
+       echo content3 >sub2/file3 &&
+       mkdir simple &&
+       echo base >simple/bar &&
+       git add -A &&
+       test_tick &&
+       git commit -m base &&
+
+       git checkout -b other &&
+       echo more >>simple/bar &&
+       test_tick &&
+       git commit -a -m changesimplefile &&
+
+       git checkout main &&
+       git rm sub1 &&
+       git mv sub2 sub1 &&
+       test_tick &&
+       git commit -m changefiletodir &&
+
+       test_tick &&
+       git merge other
+'
 
 test_done
index 9454423ca02af98ad50a089e0c0dc2bc1e952bd0..d3913f9088950a3ca848b8994abfddfecd3f6706 100755 (executable)
@@ -158,8 +158,8 @@ EOF
 
 test_expect_success 'git branch `--sort` option' '
        cat >expect <<-\EOF &&
-         branch-two
        * (HEAD detached from fromtag)
+         branch-two
          branch-one
          master
        EOF
index 3de0b1dcfdc9c5948c10e5e8c107a3820df9f357..98eb49ac236e9e9d08d5da5167f7e257db173c41 100755 (executable)
@@ -1261,4 +1261,16 @@ test_expect_success 'static check of bad SHA-1' '
        test E = $(git cat-file commit HEAD | sed -ne \$p)
 '
 
+test_expect_success 'editor saves as CR/LF' '
+       git checkout -b with-crlf &&
+       write_script add-crs.sh <<-\EOF &&
+       sed -e "s/\$/Q/" <"$1" | tr Q "\\015" >"$1".new &&
+       mv -f "$1".new "$1"
+       EOF
+       (
+               test_set_editor "$(pwd)/add-crs.sh" &&
+               git rebase -i HEAD^
+       )
+'
+
 test_done
index 2250ef4fe245bda17328d46844a4caf49fbde8d9..dfa1bf79c5690289baeddd4498cb4c84dbd19bbe 100755 (executable)
@@ -210,4 +210,15 @@ test_expect_success 'clone, dissociate from partial reference and repack' '
        test_line_count = 1 packs.txt
 '
 
+test_expect_success 'clone, dissociate from alternates' '
+       rm -fr A B C &&
+       test_create_repo A &&
+       commit_in A file1 &&
+       git clone --reference=A A B &&
+       test_line_count = 1 B/.git/objects/info/alternates &&
+       git clone --local --dissociate B C &&
+       ! test -f C/.git/objects/info/alternates &&
+       ( cd C && git fsck )
+'
+
 test_done
diff --git a/t/t6031-merge-filemode.sh b/t/t6031-merge-filemode.sh
new file mode 100755 (executable)
index 0000000..7d06461
--- /dev/null
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+test_description='merge: handle file mode'
+. ./test-lib.sh
+
+test_expect_success 'set up mode change in one branch' '
+       : >file1 &&
+       git add file1 &&
+       git commit -m initial &&
+       git checkout -b a1 master &&
+       : >dummy &&
+       git add dummy &&
+       git commit -m a &&
+       git checkout -b b1 master &&
+       test_chmod +x file1 &&
+       git add file1 &&
+       git commit -m b1
+'
+
+do_one_mode () {
+       strategy=$1
+       us=$2
+       them=$3
+       test_expect_success "resolve single mode change ($strategy, $us)" '
+               git checkout -f $us &&
+               git merge -s $strategy $them &&
+               git ls-files -s file1 | grep ^100755
+       '
+
+       test_expect_success FILEMODE "verify executable bit on file ($strategy, $us)" '
+               test -x file1
+       '
+}
+
+do_one_mode recursive a1 b1
+do_one_mode recursive b1 a1
+do_one_mode resolve a1 b1
+do_one_mode resolve b1 a1
+
+test_expect_success 'set up mode change in both branches' '
+       git reset --hard HEAD &&
+       git checkout -b a2 master &&
+       : >file2 &&
+       H=$(git hash-object file2) &&
+       test_chmod +x file2 &&
+       git commit -m a2 &&
+       git checkout -b b2 master &&
+       : >file2 &&
+       git add file2 &&
+       git commit -m b2 &&
+       {
+               echo "100755 $H 2       file2"
+               echo "100644 $H 3       file2"
+       } >expect
+'
+
+do_both_modes () {
+       strategy=$1
+       test_expect_success "detect conflict on double mode change ($strategy)" '
+               git reset --hard &&
+               git checkout -f a2 &&
+               test_must_fail git merge -s $strategy b2 &&
+               git ls-files -u >actual &&
+               test_cmp actual expect &&
+               git ls-files -s file2 | grep ^100755
+       '
+
+       test_expect_success FILEMODE "verify executable bit on file ($strategy)" '
+               test -x file2
+       '
+}
+
+# both sides are equivalent, so no need to run both ways
+do_both_modes recursive
+do_both_modes resolve
+
+test_expect_success 'set up delete/modechange scenario' '
+       git reset --hard &&
+       git checkout -b deletion master &&
+       git rm file1 &&
+       git commit -m deletion
+'
+
+do_delete_modechange () {
+       strategy=$1
+       us=$2
+       them=$3
+       test_expect_success "detect delete/modechange conflict ($strategy, $us)" '
+               git reset --hard &&
+               git checkout $us &&
+               test_must_fail git merge -s $strategy $them
+       '
+}
+
+do_delete_modechange recursive b1 deletion
+do_delete_modechange recursive deletion b1
+do_delete_modechange resolve b1 deletion
+do_delete_modechange resolve deletion b1
+
+test_done
diff --git a/t/t6031-merge-recursive.sh b/t/t6031-merge-recursive.sh
deleted file mode 100755 (executable)
index 6464a16..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh
-
-test_description='merge-recursive: handle file mode'
-. ./test-lib.sh
-
-test_expect_success 'mode change in one branch: keep changed version' '
-       : >file1 &&
-       git add file1 &&
-       git commit -m initial &&
-       git checkout -b a1 master &&
-       : >dummy &&
-       git add dummy &&
-       git commit -m a &&
-       git checkout -b b1 master &&
-       test_chmod +x file1 &&
-       git add file1 &&
-       git commit -m b1 &&
-       git checkout a1 &&
-       git merge-recursive master -- a1 b1 &&
-       git ls-files -s file1 | grep ^100755
-'
-
-test_expect_success FILEMODE 'verify executable bit on file' '
-       test -x file1
-'
-
-test_expect_success 'mode change in both branches: expect conflict' '
-       git reset --hard HEAD &&
-       git checkout -b a2 master &&
-       : >file2 &&
-       H=$(git hash-object file2) &&
-       test_chmod +x file2 &&
-       git commit -m a2 &&
-       git checkout -b b2 master &&
-       : >file2 &&
-       git add file2 &&
-       git commit -m b2 &&
-       git checkout a2 &&
-       (
-               git merge-recursive master -- a2 b2
-               test $? = 1
-       ) &&
-       git ls-files -u >actual &&
-       (
-               echo "100755 $H 2       file2"
-               echo "100644 $H 3       file2"
-       ) >expect &&
-       test_cmp actual expect &&
-       git ls-files -s file2 | grep ^100755
-'
-
-test_expect_success FILEMODE 'verify executable bit on file' '
-       test -x file2
-'
-
-test_expect_success 'merging with triple rename across D/F conflict' '
-       git reset --hard HEAD &&
-       git checkout -b main &&
-       git rm -rf . &&
-
-       echo "just a file" >sub1 &&
-       mkdir -p sub2 &&
-       echo content1 >sub2/file1 &&
-       echo content2 >sub2/file2 &&
-       echo content3 >sub2/file3 &&
-       mkdir simple &&
-       echo base >simple/bar &&
-       git add -A &&
-       test_tick &&
-       git commit -m base &&
-
-       git checkout -b other &&
-       echo more >>simple/bar &&
-       test_tick &&
-       git commit -a -m changesimplefile &&
-
-       git checkout main &&
-       git rm sub1 &&
-       git mv sub2 sub1 &&
-       test_tick &&
-       git commit -m changefiletodir &&
-
-       test_tick &&
-       git merge other
-'
-
-test_done
index 75c50eea15e54995364fb8c81d0760446175f46e..302e23826341bce6c3797330b5f2996877dc5baf 100755 (executable)
@@ -692,4 +692,37 @@ test_expect_success GPG 'merge --no-edit tag should skip editor' '
        test_cmp actual expect
 '
 
+test_expect_success 'set up mod-256 conflict scenario' '
+       # 256 near-identical stanzas...
+       for i in $(test_seq 1 256); do
+               for j in 1 2 3 4 5; do
+                       echo $i-$j
+               done
+       done >file &&
+       git add file &&
+       git commit -m base &&
+
+       # one side changes the first line of each to "master"
+       sed s/-1/-master/ <file >tmp &&
+       mv tmp file &&
+       git commit -am master &&
+
+       # and the other to "side"; merging the two will
+       # yield 256 separate conflicts
+       git checkout -b side HEAD^ &&
+       sed s/-1/-side/ <file >tmp &&
+       mv tmp file &&
+       git commit -am side
+'
+
+test_expect_success 'merge detects mod-256 conflicts (recursive)' '
+       git reset --hard &&
+       test_must_fail git merge -s recursive master
+'
+
+test_expect_success 'merge detects mod-256 conflicts (resolve)' '
+       git reset --hard &&
+       test_must_fail git merge -s resolve master
+'
+
 test_done
index 48c6e2bc830e74ab8d242e49c08f38609b5ef585..ec8bc8c7656fd7f0fd03226b5491f5bc9d532dd7 100755 (executable)
@@ -504,4 +504,23 @@ test_expect_success PERL 'difftool properly honors gitlink and core.worktree' '
        )
 '
 
+test_expect_success PERL,SYMLINKS 'difftool --dir-diff symlinked directories' '
+       git init dirlinks &&
+       (
+               cd dirlinks &&
+               git config diff.tool checktrees &&
+               git config difftool.checktrees.cmd "echo good" &&
+               mkdir foo &&
+               : >foo/bar &&
+               git add foo/bar &&
+               test_commit symlink-one &&
+               ln -s foo link &&
+               git add link &&
+               test_commit symlink-two &&
+               echo good >expect &&
+               git difftool --tool=checktrees --dir-diff HEAD~ >actual &&
+               test_cmp expect actual
+       )
+'
+
 test_done
index 89e832b64a0548ec79802dfc6911eff9f5c353be..d0bc3ca07ab1b005884c80901ea8dee04452b71a 100644 (file)
@@ -316,10 +316,8 @@ static int reachable(struct commit *want)
 
        commit_list_insert_by_date(want, &work);
        while (work) {
-               struct commit_list *list = work->next;
-               struct commit *commit = work->item;
-               free(work);
-               work = list;
+               struct commit_list *list;
+               struct commit *commit = pop_commit(&work);
 
                if (commit->object.flags & THEY_HAVE) {
                        want->object.flags |= COMMON_KNOWN;