diff options
-rw-r--r-- | Documentation/RelNotes/2.9.4.txt | 83 | ||||
-rw-r--r-- | Documentation/SubmittingPatches | 11 | ||||
-rw-r--r-- | Documentation/gitk.txt | 2 | ||||
-rw-r--r-- | Documentation/gitrevisions.txt | 6 | ||||
-rw-r--r-- | Documentation/pretty-formats.txt | 2 | ||||
-rw-r--r-- | Documentation/rev-list-options.txt | 4 | ||||
-rw-r--r-- | Documentation/revisions.txt | 125 | ||||
-rw-r--r-- | builtin/symbolic-ref.c | 2 | ||||
-rw-r--r-- | contrib/diff-highlight/Makefile | 5 | ||||
-rwxr-xr-x | contrib/diff-highlight/diff-highlight | 19 | ||||
-rw-r--r-- | contrib/diff-highlight/t/.gitignore | 2 | ||||
-rw-r--r-- | contrib/diff-highlight/t/Makefile | 22 | ||||
-rwxr-xr-x | contrib/diff-highlight/t/t9400-diff-highlight.sh | 296 | ||||
-rw-r--r-- | po/TEAMS | 5 | ||||
-rw-r--r-- | po/pt_PT.po | 739 | ||||
-rw-r--r-- | po/zh_CN.po | 104 | ||||
-rw-r--r-- | submodule.c | 1 | ||||
-rwxr-xr-x | t/t1401-symbolic-ref.sh | 21 | ||||
-rwxr-xr-x | t/t5526-fetch-submodules.sh | 35 | ||||
-rw-r--r-- | t/test-lib.sh | 4 |
20 files changed, 973 insertions, 515 deletions
diff --git a/Documentation/RelNotes/2.9.4.txt b/Documentation/RelNotes/2.9.4.txt new file mode 100644 index 0000000000..01e864278b --- /dev/null +++ b/Documentation/RelNotes/2.9.4.txt @@ -0,0 +1,83 @@ +Git v2.9.4 Release Notes +======================== + +Fixes since v2.9.3 +------------------ + + * There are certain house-keeping tasks that need to be performed at + the very beginning of any Git program, and programs that are not + built-in commands had to do them exactly the same way as "git" + potty does. It was easy to make mistakes in one-off standalone + programs (like test helpers). A common "main()" function that + calls cmd_main() of individual program has been introduced to + make it harder to make mistakes. + + * "git merge" with renormalization did not work well with + merge-recursive, due to "safer crlf" conversion kicking in when it + shouldn't. + + * The reflog output format is documented better, and a new format + --date=unix to report the seconds-since-epoch (without timezone) + has been added. + + * "git push --force-with-lease" already had enough logic to allow + ensuring that such a push results in creation of a ref (i.e. the + receiving end did not have another push from sideways that would be + discarded by our force-pushing), but didn't expose this possibility + to the users. It does so now. + + * "import-tars" fast-import script (in contrib/) used to ignore a + hardlink target and replaced it with an empty file, which has been + corrected to record the same blob as the other file the hardlink is + shared with. + + * "git mv dir non-existing-dir/" did not work in some environments + the same way as existing mainstream platforms. The code now moves + "dir" to "non-existing-dir", without relying on rename("A", "B/") + that strips the trailing slash of '/'. + + * The "t/" hierarchy is prone to get an unusual pathname; "make test" + has been taught to make sure they do not contain paths that cannot + be checked out on Windows (and the mechanism can be reusable to + catch pathnames that are not portable to other platforms as need + arises). + + * When "git merge-recursive" works on history with many criss-cross + merges in "verbose" mode, the names the command assigns to the + virtual merge bases could have overwritten each other by unintended + reuse of the same piece of memory. + + * "git checkout --detach <branch>" used to give the same advice + message as that is issued when "git checkout <tag>" (or anything + that is not a branch name) is given, but asking with "--detach" is + an explicit enough sign that the user knows what is going on. The + advice message has been squelched in this case. + + * "git difftool" by default ignores the error exit from the backend + commands it spawns, because often they signal that they found + differences by exiting with a non-zero status code just like "diff" + does; the exit status codes 126 and above however are special in + that they are used to signal that the command is not executable, + does not exist, or killed by a signal. "git difftool" has been + taught to notice these exit status codes. + + * On Windows, help.browser configuration variable used to be ignored, + which has been corrected. + + * The "git -c var[=val] cmd" facility to append a configuration + variable definition at the end of the search order was described in + git(1) manual page, but not in git-config(1), which was more likely + place for people to look for when they ask "can I make a one-shot + override, and if so how?" + + * The tempfile (hence its user lockfile) API lets the caller to open + a file descriptor to a temporary file, write into it and then + finalize it by first closing the filehandle and then either + removing or renaming the temporary file. When the process spawns a + subprocess after obtaining the file descriptor, and if the + subprocess has not exited when the attempt to remove or rename is + made, the last step fails on Windows, because the subprocess has + the file descriptor still open. Open tempfile with O_CLOEXEC flag + to avoid this (on Windows, this is mapped to O_NOINHERIT). + +Also contains minor documentation updates and code clean-ups. diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 500230c054..08352deaae 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -122,9 +122,14 @@ without external resources. Instead of giving a URL to a mailing list archive, summarize the relevant points of the discussion. If you want to reference a previous commit in the history of a stable -branch use the format "abbreviated sha1 (subject, date)". So for example -like this: "Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30) -noticed [...]". +branch, use the format "abbreviated sha1 (subject, date)", +with the subject enclosed in a pair of double-quotes, like this: + + Commit f86a374 ("pack-bitmap.c: fix a memleak", 2015-03-30) + noticed that ... + +The "Copy commit summary" command of gitk can be used to obtain this +format. (3) Generate your patch using Git tools out of your commits. diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt index a68d860fa3..e382dd96df 100644 --- a/Documentation/gitk.txt +++ b/Documentation/gitk.txt @@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list. --left-right:: - Mark which side of a symmetric diff a commit is reachable + Mark which side of a symmetric difference a commit is reachable from. Commits from the left side are prefixed with a `<` symbol and those from the right with a `>` symbol. diff --git a/Documentation/gitrevisions.txt b/Documentation/gitrevisions.txt index e903eb7860..27dec5b91d 100644 --- a/Documentation/gitrevisions.txt +++ b/Documentation/gitrevisions.txt @@ -15,9 +15,9 @@ DESCRIPTION Many Git commands take revision parameters as arguments. Depending on the command, they denote a specific commit or, for commands which -walk the revision graph (such as linkgit:git-log[1]), all commits which can -be reached from that commit. In the latter case one can also specify a -range of revisions explicitly. +walk the revision graph (such as linkgit:git-log[1]), all commits which are +reachable from that commit. For commands that walk the revision graph one can +also specify a range of revisions explicitly. In addition, some Git commands (such as linkgit:git-show[1]) also take revision parameters which denote other objects than commits, e.g. blobs diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt index b95d67ec01..a942d57f73 100644 --- a/Documentation/pretty-formats.txt +++ b/Documentation/pretty-formats.txt @@ -172,7 +172,7 @@ endif::git-rev-list[] respecting the `auto` settings of the former if we are going to a terminal). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring on the next placeholders until the color is switched again. -- '%m': left, right or boundary mark +- '%m': left (`<`), right (`>`) or boundary (`-`) mark - '%n': newline - '%%': a raw '%' - '%x00': print a byte from a hex code diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index a779c9dfec..7e462d3841 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -225,7 +225,7 @@ excluded from the output. --left-only:: --right-only:: - List only commits on the respective side of a symmetric range, + List only commits on the respective side of a symmetric difference, i.e. only those which would be marked `<` resp. `>` by `--left-right`. + @@ -796,7 +796,7 @@ ifdef::git-rev-list[] endif::git-rev-list[] --left-right:: - Mark which side of a symmetric diff a commit is reachable from. + Mark which side of a symmetric difference a commit is reachable from. Commits from the left side are prefixed with `<` and those from the right with `>`. If combined with `--boundary`, those commits are prefixed with `-`. diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt index abae363983..4bed5b1ab7 100644 --- a/Documentation/revisions.txt +++ b/Documentation/revisions.txt @@ -237,48 +237,74 @@ SPECIFYING RANGES ----------------- History traversing commands such as `git log` operate on a set -of commits, not just a single commit. To these commands, -specifying a single revision with the notation described in the -previous section means the set of commits reachable from that -commit, following the commit ancestry chain. - -To exclude commits reachable from a commit, a prefix '{caret}' -notation is used. E.g. '{caret}r1 r2' means commits reachable -from 'r2' but exclude the ones reachable from 'r1'. - -This set operation appears so often that there is a shorthand -for it. When you have two commits 'r1' and 'r2' (named according -to the syntax explained in SPECIFYING REVISIONS above), you can ask -for commits that are reachable from r2 excluding those that are reachable -from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'. - -A similar notation 'r1\...r2' is called symmetric difference -of 'r1' and 'r2' and is defined as -'r1 r2 --not $(git merge-base --all r1 r2)'. -It is the set of commits that are reachable from either one of -'r1' or 'r2' but not from both. - -In these two shorthands, you can omit one end and let it default to HEAD. +of commits, not just a single commit. + +For these commands, +specifying a single revision, using the notation described in the +previous section, means the set of commits `reachable` from the given +commit. + +A commit's reachable set is the commit itself and the commits in +its ancestry chain. + + +Commit Exclusions +~~~~~~~~~~~~~~~~~ + +'{caret}<rev>' (caret) Notation:: + To exclude commits reachable from a commit, a prefix '{caret}' + notation is used. E.g. '{caret}r1 r2' means commits reachable + from 'r2' but exclude the ones reachable from 'r1' (i.e. 'r1' and + its ancestors). + +Dotted Range Notations +~~~~~~~~~~~~~~~~~~~~~~ + +The '..' (two-dot) Range Notation:: + The '{caret}r1 r2' set operation appears so often that there is a shorthand + for it. When you have two commits 'r1' and 'r2' (named according + to the syntax explained in SPECIFYING REVISIONS above), you can ask + for commits that are reachable from r2 excluding those that are reachable + from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'. + +The '...' (three dot) Symmetric Difference Notation:: + A similar notation 'r1\...r2' is called symmetric difference + of 'r1' and 'r2' and is defined as + 'r1 r2 --not $(git merge-base --all r1 r2)'. + It is the set of commits that are reachable from either one of + 'r1' (left side) or 'r2' (right side) but not from both. + +In these two shorthand notations, you can omit one end and let it default to HEAD. For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What did I do since I forked from the origin branch?" Similarly, '..origin' is a shorthand for 'HEAD..origin' and asks "What did the origin do since I forked from them?" Note that '..' would mean 'HEAD..HEAD' which is an empty range that is both reachable and unreachable from HEAD. -Two other shorthands for naming a set that is formed by a commit -and its parent commits exist. The 'r1{caret}@' notation means all -parents of 'r1'. 'r1{caret}!' includes commit 'r1' but excludes -all of its parents. +Other <rev>{caret} Parent Shorthand Notations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Two other shorthands exist, particularly useful for merge commits, +for naming a set that is formed by a commit and its parent commits. + +The 'r1{caret}@' notation means all parents of 'r1'. + +The 'r1{caret}!' notation includes commit 'r1' but excludes all of its parents. +By itself, this notation denotes the single commit 'r1'. + +While '<rev>{caret}<n>' was about specifying a single commit parent, these +two notations consider all its parents. For example you can say +'HEAD{caret}2{caret}@', however you cannot say 'HEAD{caret}@{caret}2'. -To summarize: +Revision Range Summary +---------------------- '<rev>':: - Include commits that are reachable from (i.e. ancestors of) - <rev>. + Include commits that are reachable from <rev> (i.e. <rev> and its + ancestors). '{caret}<rev>':: - Exclude commits that are reachable from (i.e. ancestors of) - <rev>. + Exclude commits that are reachable from <rev> (i.e. <rev> and its + ancestors). '<rev1>..<rev2>':: Include commits that are reachable from <rev2> but exclude @@ -300,16 +326,27 @@ To summarize: as giving commit '<rev>' and then all its parents prefixed with '{caret}' to exclude them (and their ancestors). -Here are a handful of examples: - - D G H D - D F G H I J D F - ^G D H D - ^D B E I J F B - B..C C - B...C G H D E B C - ^D B C E I J F B C - C I J F C - C^@ I J F - C^! C - F^! D G H D F +Here are a handful of examples using the Loeliger illustration above, +with each step in the notation's expansion and selection carefully +spelt out: + + Args Expanded arguments Selected commits + D G H D + D F G H I J D F + ^G D H D + ^D B E I J F B + ^D B C E I J F B C + C I J F C + B..C = ^B C C + B...C = B ^F C G H D E B C + C^@ = C^1 + = F I J F + B^@ = B^1 B^2 B^3 + = D E F D G H E F I J + C^! = C ^C^@ + = C ^C^1 + = C ^F C + B^! = B ^B^@ + = B ^B^1 ^B^2 ^B^3 + = B ^D ^E ^F B + F^! D = F ^I ^J D G H D F diff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c index 9c29a64e43..96eed94468 100644 --- a/builtin/symbolic-ref.c +++ b/builtin/symbolic-ref.c @@ -56,6 +56,8 @@ int cmd_symbolic_ref(int argc, const char **argv, const char *prefix) ret = check_symref(argv[0], 1, 0, 0); if (ret) die("Cannot delete %s, not a symbolic ref", argv[0]); + if (!strcmp(argv[0], "HEAD")) + die("deleting '%s' is not allowed", argv[0]); return delete_ref(argv[0], NULL, REF_NODEREF); } diff --git a/contrib/diff-highlight/Makefile b/contrib/diff-highlight/Makefile new file mode 100644 index 0000000000..9018724524 --- /dev/null +++ b/contrib/diff-highlight/Makefile @@ -0,0 +1,5 @@ +# nothing to build +all: + +test: + $(MAKE) -C t diff --git a/contrib/diff-highlight/diff-highlight b/contrib/diff-highlight/diff-highlight index ffefc31a98..81bd8040e3 100755 --- a/contrib/diff-highlight/diff-highlight +++ b/contrib/diff-highlight/diff-highlight @@ -21,6 +21,10 @@ my $RESET = "\x1b[m"; my $COLOR = qr/\x1b\[[0-9;]*m/; my $BORING = qr/$COLOR|\s/; +# The patch portion of git log -p --graph should only ever have preceding | and +# not / or \ as merge history only shows up on the commit line. +my $GRAPH = qr/$COLOR?\|$COLOR?\s+/; + my @removed; my @added; my $in_hunk; @@ -32,12 +36,12 @@ $SIG{PIPE} = 'DEFAULT'; while (<>) { if (!$in_hunk) { print; - $in_hunk = /^$COLOR*\@/; + $in_hunk = /^$GRAPH*$COLOR*\@\@ /; } - elsif (/^$COLOR*-/) { + elsif (/^$GRAPH*$COLOR*-/) { push @removed, $_; } - elsif (/^$COLOR*\+/) { + elsif (/^$GRAPH*$COLOR*\+/) { push @added, $_; } else { @@ -46,7 +50,7 @@ while (<>) { @added = (); print; - $in_hunk = /^$COLOR*[\@ ]/; + $in_hunk = /^$GRAPH*$COLOR*[\@ ]/; } # Most of the time there is enough output to keep things streaming, @@ -163,6 +167,9 @@ sub highlight_pair { } } +# we split either by $COLOR or by character. This has the side effect of +# leaving in graph cruft. It works because the graph cruft does not contain "-" +# or "+" sub split_line { local $_ = shift; return utf8::decode($_) ? @@ -211,8 +218,8 @@ sub is_pair_interesting { my $suffix_a = join('', @$a[($sa+1)..$#$a]); my $suffix_b = join('', @$b[($sb+1)..$#$b]); - return $prefix_a !~ /^$COLOR*-$BORING*$/ || - $prefix_b !~ /^$COLOR*\+$BORING*$/ || + return $prefix_a !~ /^$GRAPH*$COLOR*-$BORING*$/ || + $prefix_b !~ /^$GRAPH*$COLOR*\+$BORING*$/ || $suffix_a !~ /^$BORING*$/ || $suffix_b !~ /^$BORING*$/; } diff --git a/contrib/diff-highlight/t/.gitignore b/contrib/diff-highlight/t/.gitignore new file mode 100644 index 0000000000..7dcbb232cd --- /dev/null +++ b/contrib/diff-highlight/t/.gitignore @@ -0,0 +1,2 @@ +/trash directory* +/test-results diff --git a/contrib/diff-highlight/t/Makefile b/contrib/diff-highlight/t/Makefile new file mode 100644 index 0000000000..5ff5275496 --- /dev/null +++ b/contrib/diff-highlight/t/Makefile @@ -0,0 +1,22 @@ +-include ../../../config.mak.autogen +-include ../../../config.mak + +# copied from ../../t/Makefile +SHELL_PATH ?= $(SHELL) +SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) +T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh) + +all: test +test: $(T) + +.PHONY: help clean all test $(T) + +help: + @echo 'Run "$(MAKE) test" to launch test scripts' + @echo 'Run "$(MAKE) clean" to remove trash folders' + +$(T): + @echo "*** $@ ***"; '$(SHELL_PATH_SQ)' $@ $(GIT_TEST_OPTS) + +clean: + $(RM) -r 'trash directory'.* diff --git a/contrib/diff-highlight/t/t9400-diff-highlight.sh b/contrib/diff-highlight/t/t9400-diff-highlight.sh new file mode 100755 index 0000000000..3b43dbed74 --- /dev/null +++ b/contrib/diff-highlight/t/t9400-diff-highlight.sh @@ -0,0 +1,296 @@ +#!/bin/sh + +test_description='Test diff-highlight' + +CURR_DIR=$(pwd) +TEST_OUTPUT_DIRECTORY=$(pwd) +TEST_DIRECTORY="$CURR_DIR"/../../../t +DIFF_HIGHLIGHT="$CURR_DIR"/../diff-highlight + +CW="$(printf "\033[7m")" # white +CR="$(printf "\033[27m")" # reset + +. "$TEST_DIRECTORY"/test-lib.sh + +if ! test_have_prereq PERL +then + skip_all='skipping diff-highlight tests; perl not available' + test_done +fi + +# dh_test is a test helper function which takes 3 file names as parameters. The +# first 2 files are used to generate diff and commit output, which is then +# piped through diff-highlight. The 3rd file should contain the expected output +# of diff-highlight (minus the diff/commit header, ie. everything after and +# including the first @@ line). +dh_test () { + a="$1" b="$2" && + + cat >patch.exp && + + { + cat "$a" >file && + git add file && + git commit -m "Add a file" && + + cat "$b" >file && + git diff file >diff.raw && + git commit -a -m "Update a file" && + git show >commit.raw + } >/dev/null && + + "$DIFF_HIGHLIGHT" <diff.raw | test_strip_patch_header >diff.act && + "$DIFF_HIGHLIGHT" <commit.raw | test_strip_patch_header >commit.act && + test_cmp patch.exp diff.act && + test_cmp patch.exp commit.act +} + +test_strip_patch_header () { + sed -n '/^@@/,$p' $* +} + +# dh_test_setup_history generates a contrived graph such that we have at least +# 1 nesting (E) and 2 nestings (F). +# +# A branch +# / +# D---E---F master +# +# git log --all --graph +# * commit +# | A +# | * commit +# | | F +# | * commit +# |/ +# | E +# * commit +# D +# +dh_test_setup_history () { + echo "file1" >file1 && + echo "file2" >file2 && + echo "file3" >file3 && + + cat file1 >file && + git add file && + git commit -m "D" && + + git checkout -b branch && + cat file2 >file && + git commit -a -m "A" && + + git checkout master && + cat file2 >file && + git commit -a -m "E" && + + cat file3 >file && + git commit -a -m "F" +} + +left_trim () { + "$PERL_PATH" -pe 's/^\s+//' +} + +trim_graph () { + # graphs start with * or | + # followed by a space or / or \ + "$PERL_PATH" -pe 's@^((\*|\|)( |/|\\))+@@' +} + +test_expect_success 'diff-highlight highlights the beginning of a line' ' + cat >a <<-\EOF && + aaa + bbb + ccc + EOF + + cat >b <<-\EOF && + aaa + 0bb + ccc + EOF + + dh_test a b <<-EOF + @@ -1,3 +1,3 @@ + aaa + -${CW}b${CR}bb + +${CW}0${CR}bb + ccc + EOF +' + +test_expect_success 'diff-highlight highlights the end of a line' ' + cat >a <<-\EOF && + aaa + bbb + ccc + EOF + + cat >b <<-\EOF && + aaa + bb0 + ccc + EOF + + dh_test a b <<-EOF + @@ -1,3 +1,3 @@ + aaa + -bb${CW}b${CR} + +bb${CW}0${CR} + ccc + EOF +' + +test_expect_success 'diff-highlight highlights the middle of a line' ' + cat >a <<-\EOF && + aaa + bbb + ccc + EOF + + cat >b <<-\EOF && + aaa + b0b + ccc + EOF + + dh_test a b <<-EOF + @@ -1,3 +1,3 @@ + aaa + -b${CW}b${CR}b + +b${CW}0${CR}b + ccc + EOF +' + +test_expect_success 'diff-highlight does not highlight whole line' ' + cat >a <<-\EOF && + aaa + bbb + ccc + EOF + + cat >b <<-\EOF && + aaa + 000 + ccc + EOF + + dh_test a b <<-EOF + @@ -1,3 +1,3 @@ + aaa + -bbb + +000 + ccc + EOF +' + +test_expect_failure 'diff-highlight highlights mismatched hunk size' ' + cat >a <<-\EOF && + aaa + bbb + EOF + + cat >b <<-\EOF && + aaa + b0b + ccc + EOF + + dh_test a b <<-EOF + @@ -1,3 +1,3 @@ + aaa + -b${CW}b${CR}b + +b${CW}0${CR}b + +ccc + EOF +' + +# These two code points share the same leading byte in UTF-8 representation; +# a naive byte-wise diff would highlight only the second byte. +# +# - U+00f3 ("o" with acute) +o_accent=$(printf '\303\263') +# - U+00f8 ("o" with stroke) +o_stroke=$(printf '\303\270') + +test_expect_success 'diff-highlight treats multibyte utf-8 as a unit' ' + echo "unic${o_accent}de" >a && + echo "unic${o_stroke}de" >b && + dh_test a b <<-EOF + @@ -1 +1 @@ + -unic${CW}${o_accent}${CR}de + +unic${CW}${o_stroke}${CR}de + EOF +' + +# Unlike the UTF-8 above, these are combining code points which are meant +# to modify the character preceding them: +# +# - U+0301 (combining acute accent) +combine_accent=$(printf '\314\201') +# - U+0302 (combining circumflex) +combine_circum=$(printf '\314\202') + +test_expect_failure 'diff-highlight treats combining code points as a unit' ' + echo "unico${combine_accent}de" >a && + echo "unico${combine_circum}de" >b && + dh_test a b <<-EOF + @@ -1 +1 @@ + -unic${CW}o${combine_accent}${CR}de + +unic${CW}o${combine_circum}${CR}de + EOF +' + +test_expect_success 'diff-highlight works with the --graph option' ' + dh_test_setup_history && + + # topo-order so that the order of the commits is the same as with --graph + # trim graph elements so we can do a diff + # trim leading space because our trim_graph is not perfect + git log --branches -p --topo-order | + "$DIFF_HIGHLIGHT" | left_trim >graph.exp && + git log --branches -p --graph | + "$DIFF_HIGHLIGHT" | trim_graph | left_trim >graph.act && + test_cmp graph.exp graph.act +' + +# Most combined diffs won't meet diff-highlight's line-number filter. So we +# create one here where one side drops a line and the other modifies it. That +# should result in a diff like: +# +# - modified content +# ++resolved content +# +# which naively looks like one side added "+resolved". +test_expect_success 'diff-highlight ignores combined diffs' ' + echo "content" >file && + git add file && + git commit -m base && + + >file && + git commit -am master && + + git checkout -b other HEAD^ && + echo "modified content" >file && + git commit -am other && + + test_must_fail git merge master && + echo "resolved content" >file && + git commit -am resolved && + + cat >expect <<-\EOF && + --- a/file + +++ b/file + @@@ -1,1 -1,0 +1,1 @@@ + - modified content + ++resolved content + EOF + + git show -c | "$DIFF_HIGHLIGHT" >actual.raw && + sed -n "/^---/,\$p" <actual.raw >actual && + test_cmp expect actual +' + +test_done @@ -37,8 +37,9 @@ Repository: https://github.com/changwoo/git-l10n-ko/ Leader: Changwoo Ryu <cwryu@debian.org> Language: pt_PT (Portuguese - Portugal) -Repository: https://github.com/marcomsousa/git-l10n-pt_PT/ -Leader: Marco Sousa <marcomsousa AT gmail.com> +Repository: https://github.com/vascool/git-po-pt/ +Leader: Vasco Almeida <vascomalmeida@sapo.pt> +Members: Marco Sousa <marcomsousa AT gmail.com> Language: ru (Russian) Repository: https://github.com/DJm00n/git-po-ru/ diff --git a/po/pt_PT.po b/po/pt_PT.po index 13610a0aa9..c8658dfd25 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-08-15 22:43+0800\n" -"PO-Revision-Date: 2016-08-24 14:07+0000\n" +"POT-Creation-Date: 2016-08-27 23:21+0800\n" +"PO-Revision-Date: 2016-09-03 12:00+0000\n" "Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -27,7 +27,8 @@ msgstr "dica: %.*s\n" #: advice.c:83 msgid "Cherry-picking is not possible because you have unmerged files." -msgstr "Não é possível efetuar cherry-pick porque tem ficheiros não integrados." +msgstr "" +"Não é possível efetuar cherry-pick porque tem ficheiros não integrados." #: advice.c:85 msgid "Committing is not possible because you have unmerged files." @@ -614,145 +615,98 @@ msgstr "linha de configuração %d incorreta na linha de comandos %s" msgid "bad config line %d in %s" msgstr "linha de configuração %d incorreta em %s" -#: config.c:660 -#, c-format -msgid "bad numeric config value '%s' for '%s': out of range" -msgstr "valor numérico '%s' da configuração '%s' incorreto: fora de intervalo" +#: config.c:655 +msgid "out of range" +msgstr "fora de intervalo" + +#: config.c:655 +msgid "invalid unit" +msgstr "unidade inválida" #: config.c:661 #, c-format -msgid "bad numeric config value '%s' for '%s': invalid unit" -msgstr "valor numérico '%s' da configuração '%s' incorreto: unidade inválida" +msgid "bad numeric config value '%s' for '%s': %s" +msgstr "valor numérico '%s' da configuração '%s' incorreto: %s" -#: config.c:667 +#: config.c:666 #, c-format -msgid "bad numeric config value '%s' for '%s' in blob %s: out of range" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto no blob %s: fora de " -"intervalo" +msgid "bad numeric config value '%s' for '%s' in blob %s: %s" +msgstr "valor numérico '%s' da configuração '%s' incorreto no blob %s: %s" -#: config.c:668 +#: config.c:669 #, c-format -msgid "bad numeric config value '%s' for '%s' in blob %s: invalid unit" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto no blob %s: unidade " -"inválida" +msgid "bad numeric config value '%s' for '%s' in file %s: %s" +msgstr "valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: %s" #: config.c:672 #, c-format -msgid "bad numeric config value '%s' for '%s' in file %s: out of range" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: fora de " -"intervalo" - -#: config.c:673 -#, c-format -msgid "bad numeric config value '%s' for '%s' in file %s: invalid unit" +msgid "bad numeric config value '%s' for '%s' in standard input: %s" msgstr "" -"valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: unidade " -"inválida" +"valor numérico '%s' da configuração '%s' incorreto na entrada padrão: %s" -#: config.c:677 +#: config.c:675 #, c-format -msgid "bad numeric config value '%s' for '%s' in standard input: out of range" +msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s" msgstr "" -"valor numérico '%s' da configuração '%s' incorreto na entrada padrão: fora " -"de intervalo" +"valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: %s" #: config.c:678 #, c-format -msgid "bad numeric config value '%s' for '%s' in standard input: invalid unit" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto na entrada padrão: " -"unidade inválida" - -#: config.c:682 -#, c-format -msgid "" -"bad numeric config value '%s' for '%s' in submodule-blob %s: out of range" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: " -"fora de intervalo" - -#: config.c:683 -#, c-format -msgid "" -"bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: " -"unidade inválida" - -#: config.c:687 -#, c-format -msgid "bad numeric config value '%s' for '%s' in command line %s: out of range" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto na linha de comandos %s: " -"fora de intervalo" - -#: config.c:688 -#, c-format -msgid "bad numeric config value '%s' for '%s' in command line %s: invalid unit" +msgid "bad numeric config value '%s' for '%s' in command line %s: %s" msgstr "" "valor numérico '%s' da configuração '%s' incorreto na linha de comandos %s: " -"unidade inválida" - -#: config.c:692 -#, c-format -msgid "bad numeric config value '%s' for '%s' in %s: out of range" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto em %s: fora de intervalo" +"%s" -#: config.c:693 +#: config.c:681 #, c-format -msgid "bad numeric config value '%s' for '%s' in %s: invalid unit" -msgstr "" -"valor numérico '%s' da configuração '%s' incorreto em %s: unidade inválida" +msgid "bad numeric config value '%s' for '%s' in %s: %s" +msgstr "valor numérico '%s' da configuração '%s' incorreto em %s: %s" -#: config.c:780 +#: config.c:768 #, c-format msgid "failed to expand user dir in: '%s'" msgstr "falha ao expandir diretório de utilizador em: '%s'" -#: config.c:861 config.c:872 +#: config.c:849 config.c:860 #, c-format msgid "bad zlib compression level %d" msgstr "nível de compressão zlib %d incorreto" -#: config.c:990 +#: config.c:978 #, c-format msgid "invalid mode for object creation: %s" msgstr "modo inválido para criação de objeto: %s" -#: config.c:1324 +#: config.c:1312 msgid "unable to parse command-line config" msgstr "não é possível analisar configuração de linha de comandos" -#: config.c:1374 +#: config.c:1362 msgid "unknown error occurred while reading the configuration files" msgstr "" "ocorreu um erro desconhecido durante a leitura dos ficheiros de configuração" -#: config.c:1728 +#: config.c:1716 #, c-format msgid "unable to parse '%s' from command-line config" msgstr "não é possível analisar '%s' da configuração de linha de comandos" -#: config.c:1730 +#: config.c:1718 #, c-format msgid "bad config variable '%s' in file '%s' at line %d" msgstr "variável de configuração '%s' incorreta no ficheiro '%s' na linha %d" -#: config.c:1789 +#: config.c:1777 #, c-format msgid "%s has multiple values" msgstr "%s tem múltiplos valores" -#: config.c:2323 +#: config.c:2311 #, c-format msgid "could not set '%s' to '%s'" msgstr "não foi possível definir '%s' como '%s'" -#: config.c:2325 +#: config.c:2313 #, c-format msgid "could not unset '%s'" msgstr "não foi possível reiniciar '%s'" @@ -1030,73 +984,73 @@ msgstr "falha ao ler a cache" msgid "unable to write new index file" msgstr "não foi possível escrever novo ficheiro de índice" -#: merge-recursive.c:212 +#: merge-recursive.c:209 msgid "(bad commit)\n" msgstr "(commit incorreto)\n" -#: merge-recursive.c:234 +#: merge-recursive.c:231 #, c-format msgid "addinfo_cache failed for path '%s'" msgstr "addinfo_cache falhou no caminho '%s'" -#: merge-recursive.c:304 +#: merge-recursive.c:301 msgid "error building trees" msgstr "erro ao construir árvores" -#: merge-recursive.c:723 +#: merge-recursive.c:720 #, c-format msgid "failed to create path '%s'%s" msgstr "falha ao criar o caminho '%s'%s" -#: merge-recursive.c:734 +#: merge-recursive.c:731 #, c-format msgid "Removing %s to make room for subdirectory\n" msgstr "A remover %s para criar espaço para o subdiretório\n" -#: merge-recursive.c:748 merge-recursive.c:767 +#: merge-recursive.c:745 merge-recursive.c:764 msgid ": perhaps a D/F conflict?" msgstr ": talvez um conflito D/F?" -#: merge-recursive.c:757 +#: merge-recursive.c:754 #, c-format msgid "refusing to lose untracked file at '%s'" msgstr "perda de ficheiro não controlado em '%s' recusada" -#: merge-recursive.c:799 +#: merge-recursive.c:796 #, c-format msgid "cannot read object %s '%s'" msgstr "não é possível ler o objeto %s: '%s'" -#: merge-recursive.c:801 +#: merge-recursive.c:798 #, c-format msgid "blob expected for %s '%s'" msgstr "blob para %s '%s' esperado" -#: merge-recursive.c:825 +#: merge-recursive.c:822 #, c-format msgid "failed to open '%s': %s" msgstr "falha ao abrir '%s': %s" -#: merge-recursive.c:836 +#: merge-recursive.c:833 #, c-format msgid "failed to symlink '%s': %s" msgstr "falha ao criar a ligação simbólica '%s': %s" -#: merge-recursive.c:841 +#: merge-recursive.c:838 #, c-format msgid "do not know what to do with %06o %s '%s'" msgstr "não sei o que fazer com %06o %s '%s'" -#: merge-recursive.c:981 +#: merge-recursive.c:978 msgid "Failed to execute internal merge" msgstr "Falha ao executar integração interna" -#: merge-recursive.c:985 +#: merge-recursive.c:982 #, c-format msgid "Unable to add %s to database" msgstr "Não é possível adicionar %s à base de dados" -#: merge-recursive.c:1084 merge-recursive.c:1098 +#: merge-recursive.c:1081 merge-recursive.c:1095 #, c-format msgid "" "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left " @@ -1105,7 +1059,7 @@ msgstr "" "CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s " "deixada na árvore." -#: merge-recursive.c:1090 merge-recursive.c:1103 +#: merge-recursive.c:1087 merge-recursive.c:1100 #, c-format msgid "" "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left " @@ -1114,160 +1068,160 @@ msgstr "" "CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s " "deixada na árvore em %s." -#: merge-recursive.c:1146 +#: merge-recursive.c:1143 msgid "rename" msgstr "mudar nome" -#: merge-recursive.c:1146 +#: merge-recursive.c:1143 msgid "renamed" msgstr "nome mudado" -#: merge-recursive.c:1203 +#: merge-recursive.c:1200 #, c-format msgid "%s is a directory in %s adding as %s instead" msgstr "%s é um diretório em %s adicionando %s no seu lugar" -#: merge-recursive.c:1228 +#: merge-recursive.c:1225 #, c-format msgid "" "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s" "\"->\"%s\" in \"%s\"%s" msgstr "" -"CONFLITO (mudar nome/mudar nome): Mudar o nome \"%s\"->\"%s\" no ramo \"%s\" mudar " -"o nome \"%s\"->\"%s\" em \"%s\"%s" +"CONFLITO (mudar nome/mudar nome): Mudar o nome \"%s\"->\"%s\" no ramo \"%s\" " +"mudar o nome \"%s\"->\"%s\" em \"%s\"%s" -#: merge-recursive.c:1233 +#: merge-recursive.c:1230 msgid " (left unresolved)" msgstr " (por resolver)" -#: merge-recursive.c:1295 +#: merge-recursive.c:1292 #, c-format msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s" msgstr "" -"CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome %" -"s->%s em %s" +"CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome " +"%s->%s em %s" -#: merge-recursive.c:1328 +#: merge-recursive.c:1325 #, c-format msgid "Renaming %s to %s and %s to %s instead" msgstr "A mudar o nome de %s para %s e de %s para %s, em alternativa" -#: merge-recursive.c:1534 +#: merge-recursive.c:1531 #, c-format msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s" msgstr "" "CONFLITO (mudar nome/adicionar): Mudar o nome %s->%s em %s. %s adicionado em " "%s" -#: merge-recursive.c:1549 +#: merge-recursive.c:1546 #, c-format msgid "Adding merged %s" msgstr "A adicionar %s integrado" -#: merge-recursive.c:1556 merge-recursive.c:1769 +#: merge-recursive.c:1553 merge-recursive.c:1766 #, c-format msgid "Adding as %s instead" msgstr "A adicionar como %s, em alternativa." -#: merge-recursive.c:1613 +#: merge-recursive.c:1610 #, c-format msgid "cannot read object %s" msgstr "não foi possível ler o objeto %s" -#: merge-recursive.c:1616 +#: merge-recursive.c:1613 #, c-format msgid "object %s is not a blob" msgstr "o objeto %s não é um blob" -#: merge-recursive.c:1669 +#: merge-recursive.c:1666 msgid "modify" msgstr "modificar" -#: merge-recursive.c:1669 +#: merge-recursive.c:1666 msgid "modified" msgstr "modificado" -#: merge-recursive.c:1679 +#: merge-recursive.c:1676 msgid "content" msgstr "conteúdo" -#: merge-recursive.c:1686 +#: merge-recursive.c:1683 msgid "add/add" msgstr "adicionar/adicionar" -#: merge-recursive.c:1721 +#: merge-recursive.c:1718 #, c-format msgid "Skipped %s (merged same as existing)" msgstr "%s ignorado (integrado é igual ao existente)" -#: merge-recursive.c:1735 +#: merge-recursive.c:1732 #, c-format msgid "Auto-merging %s" msgstr "A integrar automaticamente %s" -#: merge-recursive.c:1739 git-submodule.sh:919 +#: merge-recursive.c:1736 git-submodule.sh:919 msgid "submodule" msgstr "submódulo" -#: merge-recursive.c:1740 +#: merge-recursive.c:1737 #, c-format msgid "CONFLICT (%s): Merge conflict in %s" msgstr "CONFLITO (%s): conflito de integração em %s" -#: merge-recursive.c:1834 +#: merge-recursive.c:1831 #, c-format msgid "Removing %s" msgstr "A remover %s" -#: merge-recursive.c:1860 +#: merge-recursive.c:1857 msgid "file/directory" msgstr "ficheiro/diretório" -#: merge-recursive.c:1866 +#: merge-recursive.c:1863 msgid "directory/file" msgstr "diretório/ficheiro" -#: merge-recursive.c:1871 +#: merge-recursive.c:1868 #, c-format msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s" msgstr "" "CONFLITO (%s): Há um diretório designado %s em %s. A adicionar %s como %s" -#: merge-recursive.c:1880 +#: merge-recursive.c:1877 #, c-format msgid "Adding %s" msgstr "A adicionar %s" -#: merge-recursive.c:1917 +#: merge-recursive.c:1914 msgid "Already up-to-date!" msgstr "Já está atualizado!" -#: merge-recursive.c:1926 +#: merge-recursive.c:1923 #, c-format msgid "merging of trees %s and %s failed" msgstr "falha ao integrar as árvores %s e %s" -#: merge-recursive.c:2009 +#: merge-recursive.c:2006 msgid "Merging:" msgstr "A integrar:" -#: merge-recursive.c:2022 +#: merge-recursive.c:2019 #, c-format msgid "found %u common ancestor:" msgid_plural "found %u common ancestors:" msgstr[0] "%u antecessor comum encontrado:" msgstr[1] "%u antecessores comuns encontrados:" -#: merge-recursive.c:2061 +#: merge-recursive.c:2058 msgid "merge returned no commit" msgstr "a integração não retornou nenhum commit" -#: merge-recursive.c:2124 +#: merge-recursive.c:2121 #, c-format msgid "Could not parse object '%s'" msgstr "Não foi possível analisar o objeto '%s'" -#: merge-recursive.c:2138 builtin/merge.c:641 builtin/merge.c:788 +#: merge-recursive.c:2135 builtin/merge.c:641 builtin/merge.c:788 msgid "Unable to write index." msgstr "Não é possível escrever no índice." @@ -1314,7 +1268,7 @@ msgstr "utilização: %s" msgid " or: %s" msgstr " ou: %s" -#: parse-options.c:598 +#: parse-options.c:597 #, c-format msgid " %s" msgstr " %s" @@ -1328,7 +1282,7 @@ msgstr "-NUM" msgid "malformed object name '%s'" msgstr "nome do objeto malformado '%s'" -#: path.c:796 +#: path.c:798 #, c-format msgid "Could not make %s writable by group" msgstr "Não foi possível dar permissão de escrita ao grupo a %s" @@ -1878,7 +1832,7 @@ msgid "git %s: failed to refresh the index" msgstr "git %s: falha ao atualizar o índice" #: sequencer.c:705 -msgid "Cannot revert during a another revert." +msgid "Cannot revert during another revert." msgstr "Não é possível reverter durante outra reversão." #: sequencer.c:706 @@ -2309,8 +2263,8 @@ msgid "" "Your local changes to the following files would be overwritten by %s:\n" "%%sPlease commit your changes or stash them before you %s." msgstr "" -"As suas alterações locais nos seguintes ficheiros seriam substituídas por %" -"s:\n" +"As suas alterações locais nos seguintes ficheiros seriam substituídas por " +"%s:\n" "%%sSubmeta as suas alterações ou esconda-as antes de efetuar %s." #: unpack-trees.c:76 @@ -3120,7 +3074,7 @@ msgstr "ser verboso" msgid "interactive picking" msgstr "seleção interativa" -#: builtin/add.c:257 builtin/checkout.c:1156 builtin/reset.c:286 +#: builtin/add.c:257 builtin/checkout.c:1157 builtin/reset.c:286 msgid "select hunks interactively" msgstr "selecionar blocos interativamente" @@ -4680,7 +4634,8 @@ msgstr "não faz sentido criar 'HEAD' manualmente" #: builtin/branch.c:846 msgid "-a and -r options to 'git branch' do not make sense with a branch name" -msgstr "as opções -a e -r de 'git branch' não fazem sentido com um nome de ramo" +msgstr "" +"as opções -a e -r de 'git branch' não fazem sentido com um nome de ramo" #: builtin/branch.c:849 #, c-format @@ -4801,7 +4756,7 @@ msgstr "ler os nomes dos ficheiros da entrada padrão" msgid "terminate input and output records by a NUL character" msgstr "terminar registos da entrada e da saída com um carácter NUL" -#: builtin/check-ignore.c:18 builtin/checkout.c:1137 builtin/gc.c:325 +#: builtin/check-ignore.c:18 builtin/checkout.c:1138 builtin/gc.c:325 msgid "suppress progress reporting" msgstr "suprimir informação de progresso" @@ -4976,45 +4931,45 @@ msgstr "primeiro deve resolver o índice atual" msgid "Can not do reflog for '%s': %s\n" msgstr "Não é possível efetuar reflog de '%s': %s\n" -#: builtin/checkout.c:663 +#: builtin/checkout.c:664 msgid "HEAD is now at" msgstr "HEAD está agora em" -#: builtin/checkout.c:667 builtin/clone.c:661 +#: builtin/checkout.c:668 builtin/clone.c:661 msgid "unable to update HEAD" msgstr "não foi possível atualizar HEAD" -#: builtin/checkout.c:671 +#: builtin/checkout.c:672 #, c-format msgid "Reset branch '%s'\n" msgstr "Repor ramo '%s'\n" -#: builtin/checkout.c:674 +#: builtin/checkout.c:675 #, c-format msgid "Already on '%s'\n" msgstr "Já em '%s'\n" -#: builtin/checkout.c:678 +#: builtin/checkout.c:679 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "Mudou para e repôs o ramo '%s'\n" -#: builtin/checkout.c:680 builtin/checkout.c:1069 +#: builtin/checkout.c:681 builtin/checkout.c:1070 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "Mudou para o novo ramo '%s'\n" -#: builtin/checkout.c:682 +#: builtin/checkout.c:683 #, c-format msgid "Switched to branch '%s'\n" msgstr "Mudou para o ramo '%s'\n" -#: builtin/checkout.c:733 +#: builtin/checkout.c:734 #, c-format msgid " ... and %d more.\n" msgstr " ... e mais %d.\n" -#: builtin/checkout.c:739 +#: builtin/checkout.c:740 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -5035,7 +4990,7 @@ msgstr[1] "" "\n" "%s\n" -#: builtin/checkout.c:758 +#: builtin/checkout.c:759 #, c-format msgid "" "If you want to keep it by creating a new branch, this may be a good time\n" @@ -5062,151 +5017,151 @@ msgstr[1] "" " git branch <nome-do-novo-ramo> %s\n" "\n" -#: builtin/checkout.c:794 +#: builtin/checkout.c:795 msgid "internal error in revision walk" msgstr "erro interno durante o curso de revisões" -#: builtin/checkout.c:798 +#: builtin/checkout.c:799 msgid "Previous HEAD position was" msgstr "A posição anterior de HEAD era" -#: builtin/checkout.c:825 builtin/checkout.c:1064 +#: builtin/checkout.c:826 builtin/checkout.c:1065 msgid "You are on a branch yet to be born" msgstr "Está num ramo ainda não criado" -#: builtin/checkout.c:970 +#: builtin/checkout.c:971 #, c-format msgid "only one reference expected, %d given." msgstr "esperava-se apenas uma referência, %d fornecidas." -#: builtin/checkout.c:1010 builtin/worktree.c:214 +#: builtin/checkout.c:1011 builtin/worktree.c:214 #, c-format msgid "invalid reference: %s" msgstr "referência inválida: %s" -#: builtin/checkout.c:1039 +#: builtin/checkout.c:1040 #, c-format msgid "reference is not a tree: %s" msgstr "a referência não é uma árvore: %s" -#: builtin/checkout.c:1078 +#: builtin/checkout.c:1079 msgid "paths cannot be used with switching branches" msgstr "não podem ser usados caminhos ao mudar de ramo" -#: builtin/checkout.c:1081 builtin/checkout.c:1085 +#: builtin/checkout.c:1082 builtin/checkout.c:1086 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "'%s' não pode ser usado ao mudar de ramo" -#: builtin/checkout.c:1089 builtin/checkout.c:1092 builtin/checkout.c:1097 -#: builtin/checkout.c:1100 +#: builtin/checkout.c:1090 builtin/checkout.c:1093 builtin/checkout.c:1098 +#: builtin/checkout.c:1101 #, c-format msgid "'%s' cannot be used with '%s'" msgstr "'%s' não pode ser usado com '%s'" -#: builtin/checkout.c:1105 +#: builtin/checkout.c:1106 #, c-format msgid "Cannot switch branch to a non-commit '%s'" msgstr "Não é possível mudar de ramo para '%s', visto que não é um commit" -#: builtin/checkout.c:1138 builtin/checkout.c:1140 builtin/clone.c:88 +#: builtin/checkout.c:1139 builtin/checkout.c:1141 builtin/clone.c:88 #: builtin/remote.c:165 builtin/remote.c:167 builtin/worktree.c:324 #: builtin/worktree.c:326 msgid "branch" msgstr "ramo" -#: builtin/checkout.c:1139 +#: builtin/checkout.c:1140 msgid "create and checkout a new branch" msgstr "criar e extrair um novo ramo" -#: builtin/checkout.c:1141 +#: builtin/checkout.c:1142 msgid "create/reset and checkout a branch" msgstr "criar/repor e extrair um ramo" -#: builtin/checkout.c:1142 +#: builtin/checkout.c:1143 msgid "create reflog for new branch" msgstr "criar reflog do novo ramo" -#: builtin/checkout.c:1143 builtin/worktree.c:328 +#: builtin/checkout.c:1144 builtin/worktree.c:328 msgid "detach HEAD at named commit" msgstr "destacar HEAD no commit indicado" -#: builtin/checkout.c:1144 +#: builtin/checkout.c:1145 msgid "set upstream info for new branch" msgstr "definir a informação do ramo a montante do novo ramo" -#: builtin/checkout.c:1146 +#: builtin/checkout.c:1147 msgid "new-branch" msgstr "novo-ramo" -#: builtin/checkout.c:1146 +#: builtin/checkout.c:1147 msgid "new unparented branch" msgstr "novo ramo sem pai" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1148 msgid "checkout our version for unmerged files" msgstr "extrair a nossa versão dos ficheiros não integrados" -#: builtin/checkout.c:1149 +#: builtin/checkout.c:1150 msgid "checkout their version for unmerged files" msgstr "extrair a versão deles dos ficheiros não integrados" -#: builtin/checkout.c:1151 +#: builtin/checkout.c:1152 msgid "force checkout (throw away local modifications)" msgstr "forçar extração (descartar modificações locais)" -#: builtin/checkout.c:1152 +#: builtin/checkout.c:1153 msgid "perform a 3-way merge with the new branch" msgstr "realizar uma integração com 3 pontos com o novo ramo" -#: builtin/checkout.c:1153 builtin/merge.c:231 +#: builtin/checkout.c:1154 builtin/merge.c:231 msgid "update ignored files (default)" msgstr "atualizar ficheiros ignorados (predefinição)" -#: builtin/checkout.c:1154 builtin/log.c:1459 parse-options.h:250 +#: builtin/checkout.c:1155 builtin/log.c:1459 parse-options.h:250 msgid "style" msgstr "estilo" -#: builtin/checkout.c:1155 +#: builtin/checkout.c:1156 msgid "conflict style (merge or diff3)" msgstr "estilo de conflito (merge ou diff3)" -#: builtin/checkout.c:1158 +#: builtin/checkout.c:1159 msgid "do not limit pathspecs to sparse entries only" msgstr "não restringir especificadores de caminho a entradas esparsas" -#: builtin/checkout.c:1160 +#: builtin/checkout.c:1161 msgid "second guess 'git checkout <no-such-branch>'" msgstr "tentar adivinhar 'git checkout <ramo-inexistente>'" -#: builtin/checkout.c:1162 +#: builtin/checkout.c:1163 msgid "do not check if another worktree is holding the given ref" msgstr "" "não verificar se outra árvore de trabalho contém a referência fornecida" -#: builtin/checkout.c:1163 builtin/clone.c:60 builtin/fetch.c:117 +#: builtin/checkout.c:1164 builtin/clone.c:60 builtin/fetch.c:117 #: builtin/merge.c:228 builtin/pull.c:116 builtin/push.c:536 #: builtin/send-pack.c:168 msgid "force progress reporting" msgstr "forçar informação de progresso" -#: builtin/checkout.c:1194 +#: builtin/checkout.c:1195 msgid "-b, -B and --orphan are mutually exclusive" msgstr "-b, -B e --orphan são mutuamente exclusivos" -#: builtin/checkout.c:1211 +#: builtin/checkout.c:1212 msgid "--track needs a branch name" msgstr "--track requer um nome dum ramo" -#: builtin/checkout.c:1216 +#: builtin/checkout.c:1217 msgid "Missing branch name; try -b" msgstr "Falta um nome dum ramo; tente -b" -#: builtin/checkout.c:1252 +#: builtin/checkout.c:1253 msgid "invalid path specification" msgstr "especificação de caminho inválida" -#: builtin/checkout.c:1259 +#: builtin/checkout.c:1260 #, c-format msgid "" "Cannot update paths and switch to branch '%s' at the same time.\n" @@ -5216,12 +5171,12 @@ msgstr "" "tempo.\n" "Pretendia extrair '%s' o qual não pode ser resolvido como commit?" -#: builtin/checkout.c:1264 +#: builtin/checkout.c:1265 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "git checkout: --detach não aceita um caminho como argumento '%s'" -#: builtin/checkout.c:1268 +#: builtin/checkout.c:1269 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." @@ -5626,7 +5581,7 @@ msgid "cannot unlink temporary alternates file" msgstr "" "não é possível invocar unlink sobre o ficheiro sobressalente temporário" -#: builtin/clone.c:863 builtin/receive-pack.c:1857 +#: builtin/clone.c:863 builtin/receive-pack.c:1855 msgid "Too many arguments." msgstr "Demasiados argumentos." @@ -6788,7 +6743,8 @@ msgstr "número de submódulos obtidos em paralelo" #: builtin/fetch.c:108 builtin/pull.c:187 msgid "prune remote-tracking branches no longer on remote" -msgstr "eliminar os ramos de monitorização remotos que já não existem no remoto" +msgstr "" +"eliminar os ramos de monitorização remotos que já não existem no remoto" #: builtin/fetch.c:109 builtin/pull.c:190 msgid "on-demand" @@ -7586,49 +7542,49 @@ msgstr "nenhum visualizador de manual atendeu o pedido" msgid "no info viewer handled the request" msgstr "nenhum visualizador de info atendeu o pedido" -#: builtin/help.c:408 +#: builtin/help.c:401 msgid "Defining attributes per path" msgstr "Definir atributos por caminho" -#: builtin/help.c:409 +#: builtin/help.c:402 msgid "Everyday Git With 20 Commands Or So" msgstr "Diário Git com mais ou menos 20 Comandos" -#: builtin/help.c:410 +#: builtin/help.c:403 msgid "A Git glossary" msgstr "Um Glossário do Git" -#: builtin/help.c:411 +#: builtin/help.c:404 msgid "Specifies intentionally untracked files to ignore" msgstr "" "Especificar ficheiros não controlados para serem intencionalmente ignorados" -#: builtin/help.c:412 +#: builtin/help.c:405 msgid "Defining submodule properties" msgstr "Definir propriedades de submódulos" -#: builtin/help.c:413 +#: builtin/help.c:406 msgid "Specifying revisions and ranges for Git" msgstr "Especificar revisões e intervalos do Git" -#: builtin/help.c:414 +#: builtin/help.c:407 msgid "A tutorial introduction to Git (for version 1.5.1 or newer)" msgstr "Uma introdução ao Git (versão 1.5.1 ou mais recente)" -#: builtin/help.c:415 +#: builtin/help.c:408 msgid "An overview of recommended workflows with Git" msgstr "Uma descrição geral dos fluxos de trabalho recomendados para o Git" -#: builtin/help.c:427 +#: builtin/help.c:420 msgid "The common Git guides are:\n" msgstr "Os guias comuns do Git:\n" -#: builtin/help.c:448 builtin/help.c:465 +#: builtin/help.c:441 builtin/help.c:458 #, c-format msgid "usage: %s%s" msgstr "utilização: %s%s" -#: builtin/help.c:481 +#: builtin/help.c:474 #, c-format msgid "`git %s' is aliased to `%s'" msgstr "'git %s' é um alias de '%s'" @@ -9066,7 +9022,8 @@ msgstr "O diretório %s está no índice porém nenhum submódulo?" #: builtin/mv.c:72 builtin/rm.c:317 msgid "Please stage your changes to .gitmodules or stash them to proceed" -msgstr "Prepare as suas alterações em .gitmodules ou esconda-as para prosseguir" +msgstr "" +"Prepare as suas alterações em .gitmodules ou esconda-as para prosseguir" #: builtin/mv.c:90 #, c-format @@ -9503,7 +9460,8 @@ msgid "" "Automatic notes merge failed. Fix conflicts in %s and commit the result with " "'git notes merge --commit', or abort the merge with 'git notes merge --" "abort'.\n" -msgstr "A integração automática de notas falhou. Corrija os conflitos em %s e " +msgstr "" +"A integração automática de notas falhou. Corrija os conflitos em %s e " "submeta o resultado com 'git notes merge --commit' ou aborte a integração " "com 'git notes merge --abort'.\n" @@ -10326,11 +10284,11 @@ msgstr "depurar unpack-trees" msgid "git receive-pack <git-dir>" msgstr "git receive-pack <git-dir>" -#: builtin/receive-pack.c:1845 +#: builtin/receive-pack.c:1843 msgid "quiet" msgstr "silencioso" -#: builtin/receive-pack.c:1859 +#: builtin/receive-pack.c:1857 msgid "You must specify a directory." msgstr "Deve especificar um diretório." @@ -11400,7 +11358,8 @@ msgstr "imprimir estado do programa auxiliar remoto" #: builtin/shortlog.c:13 msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]" -msgstr "git shortlog [<opções>] [<intervalo-de-revisões>] [[--] [<caminho>...]]" +msgstr "" +"git shortlog [<opções>] [<intervalo-de-revisões>] [[--] [<caminho>...]]" #: builtin/shortlog.c:242 msgid "sort output according to the number of commits per author" @@ -12222,8 +12181,7 @@ msgstr "eliminar a referência" #: builtin/update-ref.c:365 msgid "update <refname> not the one it points to" msgstr "" -"atualizar a referência <nome-da-referência>, não a referência que esta " -"aponta" +"atualizar a referência <nome-da-referência>, não a referência que esta aponta" #: builtin/update-ref.c:366 msgid "stdin has NUL-terminated arguments" @@ -12597,7 +12555,8 @@ msgstr "HEAD incorreta - é necessário uma HEAD" #, sh-format msgid "" "Checking out '$start_head' failed. Try 'git bisect reset <valid-branch>'." -msgstr "Falha ao extrair '$start_head'. Tente 'git bisect reset <ramo-válido>'." +msgstr "" +"Falha ao extrair '$start_head'. Tente 'git bisect reset <ramo-válido>'." #: git-bisect.sh:177 msgid "won't bisect on cg-seek'ed tree" @@ -12813,8 +12772,8 @@ msgid "" msgstr "" "Depois de resolver este problema, execute \"git rebase --continue\".\n" "Se prefere ignorar este patch, execute \"git rebase --skip\".\n" -"Para extrair o ramo original e interromper o rebase, execute \"git rebase " -"--abort\"." +"Para extrair o ramo original e interromper o rebase, execute \"git rebase --" +"abort\"." #: git-rebase.sh:156 git-rebase.sh:395 #, sh-format @@ -13477,167 +13436,43 @@ msgstr "Erro ao refazer integração $sha1" msgid "Could not pick $sha1" msgstr "Não foi possível apanhar $sha1" -#: git-rebase--interactive.sh:408 git-rebase--interactive.sh:474 -msgid "This is the 1st commit message:" -msgstr "Esta é a 1ª mensagem de commit:" - -#: git-rebase--interactive.sh:409 -msgid "This is the 2nd commit message:" -msgstr "Esta é a 2ª mensagem de commit:" - -#: git-rebase--interactive.sh:410 -msgid "This is the 3rd commit message:" -msgstr "Esta é a 3ª mensagem de commit:" - -#: git-rebase--interactive.sh:411 -msgid "This is the 4th commit message:" -msgstr "Esta é a 4ª mensagem de commit:" +#: git-rebase--interactive.sh:407 +#, sh-format +msgid "This is the commit message #${n}:" +msgstr "Esta é a mensagem de commit nº${n}:" #: git-rebase--interactive.sh:412 -msgid "This is the 5th commit message:" -msgstr "Esta é a 5ª mensagem de commit:" - -#: git-rebase--interactive.sh:413 -msgid "This is the 6th commit message:" -msgstr "Esta é a 6ª mensagem de commit:" - -#: git-rebase--interactive.sh:414 -msgid "This is the 7th commit message:" -msgstr "Esta é a 7ª mensagem de commit:" - -#: git-rebase--interactive.sh:415 -msgid "This is the 8th commit message:" -msgstr "Esta é a 8ª mensagem de commit:" - -#: git-rebase--interactive.sh:416 -msgid "This is the 9th commit message:" -msgstr "Esta é a 9ª mensagem de commit:" - -#: git-rebase--interactive.sh:417 -msgid "This is the 10th commit message:" -msgstr "Esta é a 10ª mensagem de commit:" - -#. TRANSLATORS: if the language you are translating into -#. doesn't allow you to compose a sentence in this fashion, -#. consider translating as if this and the following few strings -#. were "This is the commit message ${n}:" -#: git-rebase--interactive.sh:422 #, sh-format -msgid "This is the ${n}th commit message:" -msgstr "Esta é a ${n}ª mensagem de commit:" +msgid "The commit message #${n} will be skipped:" +msgstr "A mensagem de commit nº${n} será ignorada:" #: git-rebase--interactive.sh:423 #, sh-format -msgid "This is the ${n}st commit message:" -msgstr "Está é a ${n}ª mensagem de commit:" - -#: git-rebase--interactive.sh:424 -#, sh-format -msgid "This is the ${n}nd commit message:" -msgstr "Esta é a ${n}ª mensagem de commit:" - -#: git-rebase--interactive.sh:425 -#, sh-format -msgid "This is the ${n}rd commit message:" -msgstr "Esta é a ${n}ª mensagem de commit:" - -#: git-rebase--interactive.sh:426 -#, sh-format -msgid "This is the commit message ${n}:" -msgstr "Esta é a mensagem de commit ${n}:" - -#: git-rebase--interactive.sh:432 -msgid "The 1st commit message will be skipped:" -msgstr "A 1ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:433 -msgid "The 2nd commit message will be skipped:" -msgstr "A 2ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:434 -msgid "The 3rd commit message will be skipped:" -msgstr "A 3ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:435 -msgid "The 4th commit message will be skipped:" -msgstr "A 4ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:436 -msgid "The 5th commit message will be skipped:" -msgstr "A 5ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:437 -msgid "The 6th commit message will be skipped:" -msgstr "A 6ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:438 -msgid "The 7th commit message will be skipped:" -msgstr "A 7ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:439 -msgid "The 8th commit message will be skipped:" -msgstr "A 8ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:440 -msgid "The 9th commit message will be skipped:" -msgstr "A 9ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:441 -msgid "The 10th commit message will be skipped:" -msgstr "A 10ª mensagem de commit será ignorada:" - -#. TRANSLATORS: if the language you are translating into -#. doesn't allow you to compose a sentence in this fashion, -#. consider translating as if this and the following few strings -#. were "The commit message ${n} will be skipped:" -#: git-rebase--interactive.sh:446 -#, sh-format -msgid "The ${n}th commit message will be skipped:" -msgstr "A ${n}ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:447 -#, sh-format -msgid "The ${n}st commit message will be skipped:" -msgstr "A ${n}ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:448 -#, sh-format -msgid "The ${n}nd commit message will be skipped:" -msgstr "A ${n}ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:449 -#, sh-format -msgid "The ${n}rd commit message will be skipped:" -msgstr "A ${n}ª mensagem de commit será ignorada:" - -#: git-rebase--interactive.sh:450 -#, sh-format -msgid "The commit message ${n} will be skipped:" -msgstr "A mensagem de commit ${n} será ignorada:" - -#: git-rebase--interactive.sh:462 -#, sh-format msgid "This is a combination of $count commit." msgid_plural "This is a combination of $count commits." msgstr[0] "Isto é a combinação de $count commit." msgstr[1] "Isto é a combinação de $count commits." -#: git-rebase--interactive.sh:470 +#: git-rebase--interactive.sh:431 #, sh-format msgid "Cannot write $fixup_msg" msgstr "Não é possível escrever $fixup_msg" -#: git-rebase--interactive.sh:473 +#: git-rebase--interactive.sh:434 msgid "This is a combination of 2 commits." msgstr "Isto é a combinação de 2 commits." -#: git-rebase--interactive.sh:514 git-rebase--interactive.sh:557 -#: git-rebase--interactive.sh:560 +#: git-rebase--interactive.sh:435 +msgid "This is the 1st commit message:" +msgstr "Esta é a 1ª mensagem de commit:" + +#: git-rebase--interactive.sh:475 git-rebase--interactive.sh:518 +#: git-rebase--interactive.sh:521 #, sh-format msgid "Could not apply $sha1... $rest" msgstr "Não foi possível aplicar $sha1... $rest" -#: git-rebase--interactive.sh:588 +#: git-rebase--interactive.sh:549 #, sh-format msgid "" "Could not amend commit after successfully picking $sha1... $rest\n" @@ -13654,31 +13489,31 @@ msgstr "" "poder\n" "reformular a mensagem do commit." -#: git-rebase--interactive.sh:603 +#: git-rebase--interactive.sh:564 #, sh-format msgid "Stopped at $sha1_abbrev... $rest" msgstr "Parou em $sha1_abbrev... $rest" -#: git-rebase--interactive.sh:618 +#: git-rebase--interactive.sh:579 #, sh-format msgid "Cannot '$squash_style' without a previous commit" msgstr "Não é possível efetuar '$squash_style' sem um commit anterior" -#: git-rebase--interactive.sh:660 +#: git-rebase--interactive.sh:621 #, sh-format msgid "Executing: $rest" msgstr "A executar: $rest" -#: git-rebase--interactive.sh:668 +#: git-rebase--interactive.sh:629 #, sh-format msgid "Execution failed: $rest" msgstr "Falha ao executar: $rest" -#: git-rebase--interactive.sh:670 +#: git-rebase--interactive.sh:631 msgid "and made changes to the index and/or the working tree" msgstr "e fez alterações ao índice e/ou à árvore de trabalho" -#: git-rebase--interactive.sh:672 +#: git-rebase--interactive.sh:633 msgid "" "You can fix the problem, and then run\n" "\n" @@ -13689,7 +13524,7 @@ msgstr "" "\tgit rebase --continue" #. TRANSLATORS: after these lines is a command to be issued by the user -#: git-rebase--interactive.sh:685 +#: git-rebase--interactive.sh:646 #, sh-format msgid "" "Execution succeeded: $rest\n" @@ -13704,25 +13539,25 @@ msgstr "" "\n" "\tgit rebase --continue" -#: git-rebase--interactive.sh:696 +#: git-rebase--interactive.sh:657 #, sh-format msgid "Unknown command: $command $sha1 $rest" msgstr "Comando desconhecido: $command $sha1 $rest" -#: git-rebase--interactive.sh:697 +#: git-rebase--interactive.sh:658 msgid "Please fix this using 'git rebase --edit-todo'." msgstr "Corrija-o usando 'git rebase --edit-todo'." -#: git-rebase--interactive.sh:732 +#: git-rebase--interactive.sh:693 #, sh-format msgid "Successfully rebased and updated $head_name." msgstr "$head_name rebaseado e atualizado com sucesso." -#: git-rebase--interactive.sh:779 +#: git-rebase--interactive.sh:740 msgid "Could not skip unnecessary pick commands" msgstr "Não foi possível saltar comandos pick desnecessários" -#: git-rebase--interactive.sh:937 +#: git-rebase--interactive.sh:898 #, sh-format msgid "" "Warning: the SHA-1 is missing or isn't a commit in the following line:\n" @@ -13731,7 +13566,7 @@ msgstr "" "Aviso: falta o SHA-1 ou a seguinte linha não tem um commit:\n" " - $line" -#: git-rebase--interactive.sh:970 +#: git-rebase--interactive.sh:931 #, sh-format msgid "" "Warning: the command isn't recognized in the following line:\n" @@ -13740,11 +13575,11 @@ msgstr "" "Aviso: o comando não é reconhecido na seguinte linha:\n" " - $line" -#: git-rebase--interactive.sh:1009 +#: git-rebase--interactive.sh:970 msgid "could not detach HEAD" msgstr "não foi possível destacar HEAD" -#: git-rebase--interactive.sh:1047 +#: git-rebase--interactive.sh:1008 msgid "" "Warning: some commits may have been dropped accidentally.\n" "Dropped commits (newer to older):" @@ -13752,7 +13587,7 @@ msgstr "" "Aviso: alguns commits podem ter sido descartados acidentalmente.\n" "Commits descartados (mais novo para o mais velho):" -#: git-rebase--interactive.sh:1055 +#: git-rebase--interactive.sh:1016 msgid "" "To avoid this message, use \"drop\" to explicitly remove a commit.\n" "\n" @@ -13760,12 +13595,13 @@ msgid "" "warnings.\n" "The possible behaviours are: ignore, warn, error." msgstr "" -"Para evitar esta mensagem, use \"drop\" para remover um commit explicitamente.\n" +"Para evitar esta mensagem, use \"drop\" para remover um commit " +"explicitamente.\n" "\n" "Use 'git config rebase.missingCommitsCheck' para mudar o nível de avisos.\n" "O comportamentos possíveis são: ignore, warn, error." -#: git-rebase--interactive.sh:1066 +#: git-rebase--interactive.sh:1027 #, sh-format msgid "" "Unrecognized setting $check_level for option rebase.missingCommitsCheck. " @@ -13774,19 +13610,19 @@ msgstr "" "Definição $check_level desconhecida da opção rebase.missingCommitsCheck. " "Ignorado." -#: git-rebase--interactive.sh:1083 +#: git-rebase--interactive.sh:1044 msgid "You can fix this with 'git rebase --edit-todo'." msgstr "Pode corrí-lo com 'git rebase --edit-todo'." -#: git-rebase--interactive.sh:1084 +#: git-rebase--interactive.sh:1045 msgid "Or you can abort the rebase with 'git rebase --abort'." msgstr "Ou pode abortar o rebase com 'git rebase --abort'." -#: git-rebase--interactive.sh:1108 +#: git-rebase--interactive.sh:1069 msgid "Could not remove CHERRY_PICK_HEAD" msgstr "Não foi possível remover CHERRY_PICK_HEAD" -#: git-rebase--interactive.sh:1113 +#: git-rebase--interactive.sh:1074 #, sh-format msgid "" "You have staged changes in your working tree.\n" @@ -13817,11 +13653,11 @@ msgstr "" "\n" " git rebase --continue\n" -#: git-rebase--interactive.sh:1130 +#: git-rebase--interactive.sh:1091 msgid "Error trying to find the author identity to amend commit" msgstr "Erro ao tentar encontrar a identidade do autor para emendar o commit" -#: git-rebase--interactive.sh:1135 +#: git-rebase--interactive.sh:1096 msgid "" "You have uncommitted changes in your working tree. Please commit them\n" "first and then run 'git rebase --continue' again." @@ -13829,11 +13665,11 @@ msgstr "" "Tem alterações por submeter na árvore de trabalho. Submeta-as primeiro\n" "e execute 'git rebase --continue' de novo." -#: git-rebase--interactive.sh:1140 git-rebase--interactive.sh:1144 +#: git-rebase--interactive.sh:1101 git-rebase--interactive.sh:1105 msgid "Could not commit staged changes." msgstr "Não foi possível submeter as alterações preparadas." -#: git-rebase--interactive.sh:1168 +#: git-rebase--interactive.sh:1129 msgid "" "\n" "You are editing the todo file of an ongoing interactive rebase.\n" @@ -13847,44 +13683,44 @@ msgstr "" " git rebase --continue\n" "\n" -#: git-rebase--interactive.sh:1176 git-rebase--interactive.sh:1337 +#: git-rebase--interactive.sh:1137 git-rebase--interactive.sh:1298 msgid "Could not execute editor" msgstr "Não foi possível executar o editor" -#: git-rebase--interactive.sh:1184 +#: git-rebase--interactive.sh:1145 msgid "You need to set your committer info first" msgstr "Primeiro tem de definir a sua informação de committer" -#: git-rebase--interactive.sh:1192 +#: git-rebase--interactive.sh:1153 #, sh-format msgid "Could not checkout $switch_to" msgstr "Não foi possível extrair $switch_to" -#: git-rebase--interactive.sh:1197 +#: git-rebase--interactive.sh:1158 msgid "No HEAD?" msgstr "Sem HEAD?" -#: git-rebase--interactive.sh:1198 +#: git-rebase--interactive.sh:1159 #, sh-format msgid "Could not create temporary $state_dir" msgstr "Não foi possível criar $state_dir temporário" -#: git-rebase--interactive.sh:1200 +#: git-rebase--interactive.sh:1161 msgid "Could not mark as interactive" msgstr "Não foi possível marcar como interativo" -#: git-rebase--interactive.sh:1210 git-rebase--interactive.sh:1215 +#: git-rebase--interactive.sh:1171 git-rebase--interactive.sh:1176 msgid "Could not init rewritten commits" msgstr "Não foi possível inicializar commits reescritos" -#: git-rebase--interactive.sh:1315 +#: git-rebase--interactive.sh:1276 #, sh-format msgid "Rebase $shortrevisions onto $shortonto ($todocount command)" msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)" msgstr[0] "Rebase $shortrevisions sobre $shortonto ($todocount comando)" msgstr[1] "Rebase $shortrevisions sobre $shortonto ($todocount comandos)" -#: git-rebase--interactive.sh:1320 +#: git-rebase--interactive.sh:1281 msgid "" "\n" "However, if you remove everything, the rebase will be aborted.\n" @@ -13894,7 +13730,7 @@ msgstr "" "No entanto, se remover tudo, o rebase será abortado.\n" "\n" -#: git-rebase--interactive.sh:1327 +#: git-rebase--interactive.sh:1288 msgid "Note that empty commits are commented out" msgstr "Note que commits vazios são comentados" @@ -13946,6 +13782,123 @@ msgstr "" msgid "Unable to determine absolute path of git directory" msgstr "Não é possível determinar o caminho absoluto do diretório git" +#~ msgid "bad numeric config value '%s' for '%s': invalid unit" +#~ msgstr "" +#~ "valor numérico '%s' da configuração '%s' incorreto: unidade inválida" + +#~ msgid "bad numeric config value '%s' for '%s' in blob %s: invalid unit" +#~ msgstr "" +#~ "valor numérico '%s' da configuração '%s' incorreto no blob %s: unidade " +#~ "inválida" + +#~ msgid "bad numeric config value '%s' for '%s' in file %s: invalid unit" +#~ msgstr "" +#~ "valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: " +#~ "unidade inválida" + +#~ msgid "" +#~ "bad numeric config value '%s' for '%s' in standard input: invalid unit" +#~ msgstr "" +#~ "valor numérico '%s' da configuração '%s' incorreto na entrada padrão: " +#~ "unidade inválida" + +#~ msgid "" +#~ "bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit" +#~ msgstr "" +#~ "valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: " +#~ "unidade inválida" + +#~ msgid "" +#~ "bad numeric config value '%s' for '%s' in command line %s: invalid unit" +#~ msgstr "" +#~ "valor numérico '%s' da configuração '%s' incorreto na linha de comandos " +#~ "%s: unidade inválida" + +#~ msgid "bad numeric config value '%s' for '%s' in %s: invalid unit" +#~ msgstr "" +#~ "valor numérico '%s' da configuração '%s' incorreto em %s: unidade inválida" + +#~ msgid "This is the 2nd commit message:" +#~ msgstr "Esta é a 2ª mensagem de commit:" + +#~ msgid "This is the 3rd commit message:" +#~ msgstr "Esta é a 3ª mensagem de commit:" + +#~ msgid "This is the 4th commit message:" +#~ msgstr "Esta é a 4ª mensagem de commit:" + +#~ msgid "This is the 5th commit message:" +#~ msgstr "Esta é a 5ª mensagem de commit:" + +#~ msgid "This is the 6th commit message:" +#~ msgstr "Esta é a 6ª mensagem de commit:" + +#~ msgid "This is the 7th commit message:" +#~ msgstr "Esta é a 7ª mensagem de commit:" + +#~ msgid "This is the 8th commit message:" +#~ msgstr "Esta é a 8ª mensagem de commit:" + +#~ msgid "This is the 9th commit message:" +#~ msgstr "Esta é a 9ª mensagem de commit:" + +#~ msgid "This is the 10th commit message:" +#~ msgstr "Esta é a 10ª mensagem de commit:" + +#~ msgid "This is the ${n}th commit message:" +#~ msgstr "Esta é a ${n}ª mensagem de commit:" + +#~ msgid "This is the ${n}st commit message:" +#~ msgstr "Está é a ${n}ª mensagem de commit:" + +#~ msgid "This is the ${n}nd commit message:" +#~ msgstr "Esta é a ${n}ª mensagem de commit:" + +#~ msgid "This is the ${n}rd commit message:" +#~ msgstr "Esta é a ${n}ª mensagem de commit:" + +#~ msgid "The 1st commit message will be skipped:" +#~ msgstr "A 1ª mensagem de commit será ignorada:" + +#~ msgid "The 2nd commit message will be skipped:" +#~ msgstr "A 2ª mensagem de commit será ignorada:" + +#~ msgid "The 3rd commit message will be skipped:" +#~ msgstr "A 3ª mensagem de commit será ignorada:" + +#~ msgid "The 4th commit message will be skipped:" +#~ msgstr "A 4ª mensagem de commit será ignorada:" + +#~ msgid "The 5th commit message will be skipped:" +#~ msgstr "A 5ª mensagem de commit será ignorada:" + +#~ msgid "The 6th commit message will be skipped:" +#~ msgstr "A 6ª mensagem de commit será ignorada:" + +#~ msgid "The 7th commit message will be skipped:" +#~ msgstr "A 7ª mensagem de commit será ignorada:" + +#~ msgid "The 8th commit message will be skipped:" +#~ msgstr "A 8ª mensagem de commit será ignorada:" + +#~ msgid "The 9th commit message will be skipped:" +#~ msgstr "A 9ª mensagem de commit será ignorada:" + +#~ msgid "The 10th commit message will be skipped:" +#~ msgstr "A 10ª mensagem de commit será ignorada:" + +#~ msgid "The ${n}th commit message will be skipped:" +#~ msgstr "A ${n}ª mensagem de commit será ignorada:" + +#~ msgid "The ${n}st commit message will be skipped:" +#~ msgstr "A ${n}ª mensagem de commit será ignorada:" + +#~ msgid "The ${n}nd commit message will be skipped:" +#~ msgstr "A ${n}ª mensagem de commit será ignorada:" + +#~ msgid "The ${n}rd commit message will be skipped:" +#~ msgstr "A ${n}ª mensagem de commit será ignorada:" + #~ msgid "could not run gpg." #~ msgstr "não foi possível executar gpg." @@ -14034,7 +13987,8 @@ msgstr "Não é possível determinar o caminho absoluto do diretório git" #~ "use the '--force' option. If the local git directory is not the correct " #~ "repo" #~ msgstr "" -#~ "use a opção '--force'. Se o diretório git local não é o repositório correto" +#~ "use a opção '--force'. Se o diretório git local não é o repositório " +#~ "correto" #~ msgid "" #~ "or you are unsure what this means choose another name with the '--name' " @@ -14140,7 +14094,8 @@ msgstr "Não é possível determinar o caminho absoluto do diretório git" #~ "Quando push.default está definido como 'matching', o Git publica\n" #~ "os ramos locais nos ramos remotos que já existam com o mesmo nome.\n" #~ "\n" -#~ "Desde a versão 2.0, o Git assume o comportamento mais conservativo 'simple',\n" +#~ "Desde a versão 2.0, o Git assume o comportamento mais conservativo " +#~ "'simple',\n" #~ "publicando só o ramo atual no ramo remoto correspondente, que é usado\n" #~ "para atualizar o ramo atual com 'git pull'.\n" #~ "Consulte 'git help config' e procure por 'push.default' para mais " diff --git a/po/zh_CN.po b/po/zh_CN.po index ac7f5b4cb1..dc312227e0 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -136,7 +136,7 @@ msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" "POT-Creation-Date: 2016-08-27 23:21+0800\n" -"PO-Revision-Date: 2016-08-31 00:11+0800\n" +"PO-Revision-Date: 2016-09-05 23:36+0800\n" "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n" "Language-Team: GitHub <https://github.com/jiangxin/git/>\n" "Language: zh_CN\n" @@ -319,7 +319,7 @@ msgstr "远程 git-upload-archive 命令的路径" #: archive.c:461 msgid "Unexpected option --remote" -msgstr "意外的选项 --remote" +msgstr "未知参数 --remote" #: archive.c:463 msgid "Option --exec can only be used together with --remote" @@ -419,7 +419,7 @@ msgstr "" #: bisect.c:798 #, c-format msgid "Bisecting: a merge base must be tested\n" -msgstr "二分查找中:合并基线必须要测试\n" +msgstr "二分查找中:合并基线必须是经过测试的\n" #: bisect.c:849 #, c-format @@ -467,8 +467,8 @@ msgstr[1] "(大概 %d 步)" #, c-format msgid "Bisecting: %d revision left to test after this %s\n" msgid_plural "Bisecting: %d revisions left to test after this %s\n" -msgstr[0] "二分查找中:在 %2$s 之后还剩下 %1$d 个版本\n" -msgstr[1] "二分查找中:在 %2$s 之后还剩下 %1$d 个版本\n" +msgstr[0] "二分查找中:在此之后,还剩 %d 个版本待测试 %s\n" +msgstr[1] "二分查找中:在此之后,还剩 %d 个版本待测试 %s\n" #: branch.c:53 #, c-format @@ -720,7 +720,7 @@ msgstr "标准输入中错误的配置行 %d" #: config.c:528 #, c-format msgid "bad config line %d in submodule-blob %s" -msgstr "子模组数据 %2$s 中错误的配置行 %1$d" +msgstr "子模组数据对象 %2$s 中错误的配置行 %1$d" #: config.c:532 #, c-format @@ -743,37 +743,37 @@ msgstr "无效的单位" #: config.c:661 #, c-format msgid "bad numeric config value '%s' for '%s': %s" -msgstr "配置变量 '%2$s' 的数字取值 '%1$s' 设置错误: %3$s" +msgstr "配置变量 '%2$s' 的数字取值 '%1$s' 设置错误:%3$s" #: config.c:666 #, c-format msgid "bad numeric config value '%s' for '%s' in blob %s: %s" -msgstr "数据对象 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s" +msgstr "数据对象 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s" #: config.c:669 #, c-format msgid "bad numeric config value '%s' for '%s' in file %s: %s" -msgstr "文件 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s" +msgstr "文件 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s" #: config.c:672 #, c-format msgid "bad numeric config value '%s' for '%s' in standard input: %s" -msgstr "标准输入中配置变量 '%2$s' 错误的取值 '%1$s': %3$s" +msgstr "标准输入中配置变量 '%2$s' 错误的取值 '%1$s':%3$s" #: config.c:675 #, c-format msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s" -msgstr "子模组数据 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s" +msgstr "子模组数据 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s" #: config.c:678 #, c-format msgid "bad numeric config value '%s' for '%s' in command line %s: %s" -msgstr "命令行 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s" +msgstr "命令行 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s" #: config.c:681 #, c-format msgid "bad numeric config value '%s' for '%s' in %s: %s" -msgstr "在 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s" +msgstr "在 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s" #: config.c:768 #, c-format @@ -949,7 +949,7 @@ msgstr "外部 diff 退出,停止在 %s" #: diff.c:3415 msgid "--follow requires exactly one pathspec" -msgstr "--follow 参数后只跟一个 pathspec" +msgstr "--follow 明确要求只跟一个路径规格" #: diff.c:3578 #, c-format @@ -1033,7 +1033,7 @@ msgid "" "WARNING: You called a Git command named '%s', which does not exist.\n" "Continuing under the assumption that you meant '%s'" msgstr "" -"警告:您运行一个不存在的 Git 命令 '%s'。继续执行假定您要要运行的\n" +"警告:您运行一个不存在的 Git 命令 '%s'。继续执行假定您要运行的\n" "是 '%s'" #: help.c:393 @@ -2059,7 +2059,7 @@ msgid "" "Use '--' to separate paths from revisions, like this:\n" "'git <command> [<revision>...] -- [<file>...]'" msgstr "" -"有歧义的参数 '%s':工作区中未知的版本或路径。\n" +"有歧义的参数 '%s':未知的版本或路径不存在于工作区中。\n" "使用 '--' 来分隔版本和路径,例如:\n" "'git <command> [<revision>...] -- [<file>...]'" @@ -2070,7 +2070,7 @@ msgid "" "Use '--' to separate paths from revisions, like this:\n" "'git <command> [<revision>...] -- [<file>...]'" msgstr "" -"有歧义的参数 '%s':两者均为版本和文件\n" +"有歧义的参数 '%s':可同时是版本和文件\n" "使用 '--' 来分隔版本和路径,例如:\n" "'git <command> [<revision>...] -- [<file>...]'" @@ -2107,7 +2107,7 @@ msgid "" "Not a git repository (or any parent up to mount point %s)\n" "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)." msgstr "" -"不是一个 git 仓库(或者任何向上递归到挂载点 %s)\n" +"不是一个 git 仓库(或者向上递归至挂载点 %s 的任何祖先目录)\n" "停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。" #: setup.c:927 @@ -2121,7 +2121,7 @@ msgid "" "Problem with core.sharedRepository filemode value (0%.3o).\n" "The owner of files must always have read and write permissions." msgstr "" -"参数 core.sharedRepository 的文件权限值有错(0%.3o)。\n" +"参数 core.sharedRepository 的文件权限值有错(0%.3o)。\n" "文件属主必须始终拥有读写权限。" #: sha1_file.c:1046 @@ -2260,7 +2260,7 @@ msgstr "传输:无效的深度选项 '%s'" msgid "" "The following submodule paths contain changes that can\n" "not be found on any remote:\n" -msgstr "如下的子模组路径的修改在任何远程源中都找不到:\n" +msgstr "下列子模组路径所包含的修改在任何远程源中都找不到:\n" #: transport.c:775 #, c-format @@ -2286,7 +2286,7 @@ msgstr "" "\n" "\tgit push\n" "\n" -"来推送到远程源。\n" +"以推送至远程。\n" "\n" #: transport.c:783 @@ -6815,7 +6815,7 @@ msgstr "[已拒绝]" #: builtin/fetch.c:610 msgid "can't fetch in current branch" -msgstr "不能获取到当前分支" +msgstr "当前分支下不能执行获取操作" #: builtin/fetch.c:619 msgid "[tag update]" @@ -7922,12 +7922,12 @@ msgstr "重新初始化已存在的 Git 仓库于 %s%s\n" #: builtin/init-db.c:407 #, c-format msgid "Initialized empty shared Git repository in %s%s\n" -msgstr "初始化空的共享 Git 仓库于 %s%s\n" +msgstr "已初始化空的共享 Git 仓库于 %s%s\n" #: builtin/init-db.c:408 #, c-format msgid "Initialized empty Git repository in %s%s\n" -msgstr "初始化空的 Git 仓库于 %s%s\n" +msgstr "已初始化空的 Git 仓库于 %s%s\n" #: builtin/init-db.c:455 msgid "" @@ -8718,7 +8718,7 @@ msgstr "对于 %s 没有来自 %s 的远程跟踪分支" #: builtin/merge.c:960 #, c-format msgid "Bad value '%s' in environment '%s'" -msgstr "环境 '%2$s' 坏的取值 '%1$s'" +msgstr "环境 '%2$s' 中存在坏的取值 '%1$s'" #: builtin/merge.c:1034 #, c-format @@ -9378,7 +9378,7 @@ msgstr "不能混用 --commit、--abort 或 -s/--strategy" #: builtin/notes.c:797 msgid "Must specify a notes ref to merge" -msgstr "您必须指定一个注解引用来合并" +msgstr "必须指定一个注解引用来合并" #: builtin/notes.c:821 #, c-format @@ -10091,7 +10091,7 @@ msgstr "server-specific" #: builtin/push.c:546 msgid "option to transmit" -msgstr "传输的选项" +msgstr "传输选项" #: builtin/push.c:560 msgid "--delete is incompatible with --all, --mirror and --tags" @@ -11566,7 +11566,7 @@ msgstr "并发任务" #: builtin/submodule--helper.c:840 msgid "whether the initial clone should follow the shallow recommendation" -msgstr "是否初始克隆应该遵守推荐的浅克隆选项" +msgstr "初始克隆是否应该遵守推荐的浅克隆选项" #: builtin/submodule--helper.c:841 msgid "don't print cloning progress" @@ -12422,17 +12422,17 @@ msgstr "坏的 bisect_write 参数:$state" #: git-bisect.sh:262 #, sh-format msgid "Bad rev input: $arg" -msgstr "输入坏的版本:$arg" +msgstr "坏的输入版本:$arg" #: git-bisect.sh:281 #, sh-format msgid "Bad rev input: $bisected_head" -msgstr "输入坏的版本:$bisected_head" +msgstr "坏的输入版本:$bisected_head" #: git-bisect.sh:290 #, sh-format msgid "Bad rev input: $rev" -msgstr "输入坏的版本:$rev" +msgstr "坏的输入版本:$rev" #: git-bisect.sh:299 #, sh-format @@ -12579,7 +12579,7 @@ msgstr "错误:您对下列文件的本地修改将被合并操作覆盖" #: git-merge-octopus.sh:61 msgid "Automated merge did not work." -msgstr "自动合并不工作" +msgstr "自动合并未生效。" #: git-merge-octopus.sh:62 msgid "Should not be doing an Octopus." @@ -12607,7 +12607,7 @@ msgstr "尝试和 $pretty_name 的简单合并" #: git-merge-octopus.sh:102 msgid "Simple merge did not work, trying automatic merge." -msgstr "简单合并不行,尝试自动合并。" +msgstr "简单合并未生效,尝试自动合并。" #: git-rebase.sh:56 msgid "" @@ -12881,7 +12881,7 @@ msgstr "索引的进度没有被恢复。" #: git-stash.sh:551 msgid "The stash is kept in case you need it again." -msgstr "进度保存以免您再需要。" +msgstr "暂存被保留以备您再次需要。" #: git-stash.sh:560 #, sh-format @@ -13003,7 +13003,7 @@ msgid "" "(use 'rm -rf' if you really want to remove it including all of its history)" msgstr "" "子模组工作区 '$displaypath' 包含一个 .git 目录\n" -"(使用 'rm -rf' 命令如果您真的想删除它及其全部历史)" +"(如果您真的想删除它及其全部历史,使用 'rm -rf' 命令)" #: git-submodule.sh:447 #, sh-format @@ -13047,7 +13047,7 @@ msgstr "无法在子模组路径 '$sm_path' 中获取" msgid "" "Unable to find current ${remote_name}/${branch} revision in submodule path " "'$sm_path'" -msgstr "无法在子模组路径 '$sm_path' 中找到当前 ${remote_name}/${branch} 版本" +msgstr "无法在子模组路径 '$sm_path' 中找到当前版本 ${remote_name}/${branch}" #: git-submodule.sh:645 #, sh-format @@ -13181,7 +13181,7 @@ msgstr "" " x, exec = 使用 shell 运行命令(此行剩余部分)\n" " d, drop = 删除提交\n" "\n" -"这些行可以重新排序,从上至下地执行。\n" +"这些行可以被重新排序;它们会被从上至下地执行。\n" "\n" #: git-rebase--interactive.sh:162 @@ -13194,7 +13194,7 @@ msgstr "\n不要删除任意一行。使用 'drop' 显式地删除一个提交 msgid "" "\n" "If you remove a line here THAT COMMIT WILL BE LOST.\n" -msgstr "\n如果您在这里删除一行,这个提交将会丢失。\n" +msgstr "\n如果您在这里删除一行,对应的提交将会丢失。\n" #: git-rebase--interactive.sh:202 #, sh-format @@ -13211,7 +13211,7 @@ msgstr "" "\n" "\tgit commit --amend $gpg_sign_opt_quoted\n" "\n" -"一旦您对变更满意,执行\n" +"当您对变更感到满意,执行\n" "\n" "\tgit rebase --continue" @@ -13262,12 +13262,12 @@ msgstr "不能拣选 $sha1" #: git-rebase--interactive.sh:407 #, sh-format msgid "This is the commit message #${n}:" -msgstr "这是提交信息 #${n}:" +msgstr "这是提交说明 #${n}:" #: git-rebase--interactive.sh:412 #, sh-format msgid "The commit message #${n} will be skipped:" -msgstr "提交信息 #${n} 将被跳过:" +msgstr "提交说明 #${n} 将被跳过:" #: git-rebase--interactive.sh:423 #, sh-format @@ -13316,7 +13316,7 @@ msgstr "停止在 $sha1_abbrev... $rest" #: git-rebase--interactive.sh:579 #, sh-format msgid "Cannot '$squash_style' without a previous commit" -msgstr "不能在没有前一个提交的情况下 '$squash_style'" +msgstr "没有父提交的情况下不能 '$squash_style'" #: git-rebase--interactive.sh:621 #, sh-format @@ -13370,7 +13370,7 @@ msgstr "要修改请使用命令 'git rebase --edit-todo'。" #: git-rebase--interactive.sh:693 #, sh-format msgid "Successfully rebased and updated $head_name." -msgstr "成功变基并更新 $head_name." +msgstr "成功变基并更新 $head_name。" #: git-rebase--interactive.sh:740 msgid "Could not skip unnecessary pick commands" @@ -13412,17 +13412,17 @@ msgid "" "warnings.\n" "The possible behaviours are: ignore, warn, error." msgstr "" -"为避免这条信息,使用 drop 指令显式地删除一个提交。\n" +"为避免这条信息,使用 \"drop\" 指令显式地删除一个提交。\n" "\n" -"使用 'git config rebase.missingCommitsCheck' 来修改这个级别的警告。\n" -"可以使用:ignore、warn、error。" +"使用 'git config rebase.missingCommitsCheck' 来修改警告级别。\n" +"可选值有:ignore、warn、error。" #: git-rebase--interactive.sh:1027 #, sh-format msgid "" "Unrecognized setting $check_level for option rebase.missingCommitsCheck. " "Ignoring." -msgstr "选项 rebase.missingCommitsCheck 中无法识别的设置 $check_level。忽略。" +msgstr "选项 rebase.missingCommitsCheck 的值 $check_level 无法被识别。已忽略。" #: git-rebase--interactive.sh:1044 msgid "You can fix this with 'git rebase --edit-todo'." @@ -13461,19 +13461,19 @@ msgstr "" "\n" " git commit $gpg_sign_opt_quoted\n" "\n" -"两种情况下,一旦执行完毕,继续执行:\n" +"无论哪种情况,当您完成提交,继续执行:\n" "\n" " git rebase --continue\n" #: git-rebase--interactive.sh:1091 msgid "Error trying to find the author identity to amend commit" -msgstr "当在修补提交中查找作者信息时遇到错误" +msgstr "在修补提交中查找作者信息时遇到错误" #: git-rebase--interactive.sh:1096 msgid "" "You have uncommitted changes in your working tree. Please commit them\n" "first and then run 'git rebase --continue' again." -msgstr "您的工作区中有未提交的变更。请先提交然后再运行 'git rebase --continue'。" +msgstr "您的工作区中有未提交的变更。请先提交然后再次运行 'git rebase --continue'。" #: git-rebase--interactive.sh:1101 git-rebase--interactive.sh:1105 msgid "Could not commit staged changes." @@ -13488,7 +13488,7 @@ msgid "" "\n" msgstr "" "\n" -"您正在修改运行中的交互式变基的 todo 文件。编辑结束后继续变基,\n" +"您正在修改运行中的交互式变基的 todo 文件。若要在编辑结束后继续变基,\n" "请执行:\n" " git rebase --continue\n" "\n" @@ -13549,7 +13549,7 @@ msgstr "用法:$dashless $USAGE" #: git-sh-setup.sh:190 #, sh-format msgid "Cannot chdir to $cdup, the toplevel of the working tree" -msgstr "不能更换目录到 $cdup,工作区的顶级目录" +msgstr "不能切换目录到 $cdup,工作区的顶级目录" #: git-sh-setup.sh:199 git-sh-setup.sh:206 #, sh-format diff --git a/submodule.c b/submodule.c index 1b5cdfb7e7..e8258f061a 100644 --- a/submodule.c +++ b/submodule.c @@ -1160,4 +1160,5 @@ void prepare_submodule_repo_env(struct argv_array *out) if (strcmp(*var, CONFIG_DATA_ENVIRONMENT)) argv_array_push(out, *var); } + argv_array_push(out, "GIT_DIR=.git"); } diff --git a/t/t1401-symbolic-ref.sh b/t/t1401-symbolic-ref.sh index ca3fa406c3..eec3e90f9c 100755 --- a/t/t1401-symbolic-ref.sh +++ b/t/t1401-symbolic-ref.sh @@ -33,18 +33,25 @@ test_expect_success 'symbolic-ref refuses bare sha1' ' ' reset_to_sane -test_expect_success 'symbolic-ref deletes HEAD' ' - git symbolic-ref -d HEAD && +test_expect_success 'HEAD cannot be removed' ' + test_must_fail git symbolic-ref -d HEAD +' + +reset_to_sane + +test_expect_success 'symbolic-ref can be deleted' ' + git symbolic-ref NOTHEAD refs/heads/foo && + git symbolic-ref -d NOTHEAD && test_path_is_file .git/refs/heads/foo && - test_path_is_missing .git/HEAD + test_path_is_missing .git/NOTHEAD ' reset_to_sane -test_expect_success 'symbolic-ref deletes dangling HEAD' ' - git symbolic-ref HEAD refs/heads/missing && - git symbolic-ref -d HEAD && +test_expect_success 'symbolic-ref can delete dangling symref' ' + git symbolic-ref NOTHEAD refs/heads/missing && + git symbolic-ref -d NOTHEAD && test_path_is_missing .git/refs/heads/missing && - test_path_is_missing .git/HEAD + test_path_is_missing .git/NOTHEAD ' reset_to_sane diff --git a/t/t5526-fetch-submodules.sh b/t/t5526-fetch-submodules.sh index 954d0e43f5..f3b0a8d30a 100755 --- a/t/t5526-fetch-submodules.sh +++ b/t/t5526-fetch-submodules.sh @@ -485,4 +485,39 @@ test_expect_success 'fetching submodules respects parallel settings' ' ) ' +test_expect_success 'fetching submodule into a broken repository' ' + # Prepare src and src/sub nested in it + git init src && + ( + cd src && + git init sub && + git -C sub commit --allow-empty -m "initial in sub" && + git submodule add -- ./sub sub && + git commit -m "initial in top" + ) && + + # Clone the old-fashoned way + git clone src dst && + git -C dst clone ../src/sub sub && + + # Make sure that old-fashoned layout is still supported + git -C dst status && + + # "diff" would find no change + git -C dst diff --exit-code && + + # Recursive-fetch works fine + git -C dst fetch --recurse-submodules && + + # Break the receiving submodule + rm -f dst/sub/.git/HEAD && + + # NOTE: without the fix the following tests will recurse forever! + # They should terminate with an error. + + test_must_fail git -C dst status && + test_must_fail git -C dst diff && + test_must_fail git -C dst fetch --recurse-submodules +' + test_done diff --git a/t/test-lib.sh b/t/test-lib.sh index d731d66e36..eada492d88 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -687,9 +687,9 @@ test_done () { test_results_dir="$TEST_OUTPUT_DIRECTORY/test-results" mkdir -p "$test_results_dir" base=${0##*/} - test_results_path="$test_results_dir/${base%.sh}-$$.counts" + test_results_path="$test_results_dir/${base%.sh}.counts" - cat >>"$test_results_path" <<-EOF + cat >"$test_results_path" <<-EOF total $test_count success $test_success fixed $test_fixed |