diff options
-rw-r--r-- | Documentation/RelNotes-1.6.6.2.txt | 46 | ||||
-rw-r--r-- | Documentation/RelNotes-1.7.0.txt | 35 | ||||
-rw-r--r-- | Documentation/RelNotes-1.7.1.txt | 17 | ||||
-rw-r--r-- | Documentation/git-add.txt | 2 | ||||
-rw-r--r-- | Documentation/git-am.txt | 3 | ||||
-rw-r--r-- | Documentation/git-archive.txt | 8 | ||||
-rw-r--r-- | Documentation/git-check-ref-format.txt | 2 | ||||
-rw-r--r-- | Documentation/git-push.txt | 15 | ||||
-rw-r--r-- | Documentation/git-rev-parse.txt | 2 | ||||
-rw-r--r-- | Documentation/git.txt | 8 | ||||
-rwxr-xr-x | GIT-VERSION-GEN | 2 | ||||
l--------- | RelNotes | 2 | ||||
-rw-r--r-- | builtin-blame.c | 2 | ||||
-rw-r--r-- | builtin-grep.c | 10 | ||||
-rw-r--r-- | builtin-pack-objects.c | 20 | ||||
-rwxr-xr-x | contrib/completion/git-completion.bash | 2 | ||||
-rwxr-xr-x | git-am.sh | 5 | ||||
-rwxr-xr-x | git-filter-branch.sh | 2 | ||||
-rw-r--r-- | imap-send.c | 15 | ||||
-rwxr-xr-x | t/t3902-quoted.sh | 8 | ||||
-rwxr-xr-x | t/t5300-pack-object.sh | 2 | ||||
-rwxr-xr-x | t/t7002-grep.sh | 33 | ||||
-rwxr-xr-x | t/t8003-blame.sh | 10 |
23 files changed, 189 insertions, 62 deletions
diff --git a/Documentation/RelNotes-1.6.6.2.txt b/Documentation/RelNotes-1.6.6.2.txt new file mode 100644 index 0000000000..4eaddc0106 --- /dev/null +++ b/Documentation/RelNotes-1.6.6.2.txt @@ -0,0 +1,46 @@ +Git v1.6.6.2 Release Notes +========================== + +Fixes since v1.6.6.1 +-------------------- + + * recursive merge didn't correctly diagnose its own programming errors, + and instead caused the caller to segfault. + + * The new "smart http" aware clients probed the web servers to see if + they support smart http, but did not fall back to dumb http transport + correctly with some servers. + + * Time based reflog syntax e.g. "@{yesterday}" didn't diagnose a misspelled + time specification and instead assumed "@{now}". + + * "git archive HEAD -- no-such-directory" produced an empty archive + without complaining. + + * "git blame -L start,end -- file" misbehaved when given a start that is + larger than the number of lines in the file. + + * "git checkout -m" didn't correctly call custom merge backend supplied + by the end user. + + * "git config -f <file>" misbehaved when run from a subdirectory. + + * "git cvsserver" didn't like having regex metacharacters (e.g. '+') in + CVSROOT environment. + + * "git fast-import" did not correctly handle large blobs that may + bust the pack size limit. + + * "git gui" is supposed to work even when launched from inside a .git + directory. + + * "git gui" misbehaved when applying a hunk that ends with deletion. + + * "git imap-send" did not honor imap.preformattedHTML as documented. + + * "git log" family incorrectly showed the commit notes unconditionally by + mistake, which was especially irritating when running "git log --oneline". + + * "git status" shouldn't require an write access to the repository. + +Other minor documentation updates are included. diff --git a/Documentation/RelNotes-1.7.0.txt b/Documentation/RelNotes-1.7.0.txt index 0897287979..43e3f33615 100644 --- a/Documentation/RelNotes-1.7.0.txt +++ b/Documentation/RelNotes-1.7.0.txt @@ -4,7 +4,7 @@ Git v1.7.0 Release Notes Notes on behaviour change ------------------------- - * "git push" into a branch that is currently checked out (i.e. pointed by + * "git push" into a branch that is currently checked out (i.e. pointed at by HEAD in a repository that is not bare) is refused by default. Similarly, "git push $there :$killed" to delete the branch $killed @@ -19,7 +19,7 @@ Notes on behaviour change patch series with more than two messages. All messages will be sent as a reply to the first message, i.e. cover letter. - It has been possible to configure send-email to send "shallow thread" + It has been possible already to configure send-email to send "shallow thread" by setting sendemail.chainreplyto configuration variable to false. The only thing this release does is to change the default when you haven't configured that variable. @@ -30,7 +30,7 @@ Notes on behaviour change * "git diff" traditionally treated various "ignore whitespace" options only as a way to filter the patch output. "git diff --exit-code -b" exited with non-zero status even if all changes were about changing the - ammount of whitespace and nothing else. and "git diff -b" showed the + amount of whitespace and nothing else; and "git diff -b" showed the "diff --git" header line for such a change without patch text. In this release, the "ignore whitespaces" options affect the semantics @@ -63,7 +63,7 @@ Updates since v1.6.6 * "git svn" support of subversion "merge tickets" and miscellaneous fixes. - * "gitk" updates. + * "gitk" and "git gui" translation updates. * "gitweb" updates (code clean-up, load checking etc.) @@ -106,7 +106,9 @@ Updates since v1.6.6 defaults to the current branch, so "git fetch && git merge @{upstream}" will be equivalent to "git pull". - * "git branch --set-upstream" can be used to update the (surprise!) upstream + * "git am --resolved" has a synonym "git am --continue". + + * "git branch --set-upstream" can be used to update the (surprise!) upstream, i.e. where the branch is supposed to pull and merge from (or rebase onto). * "git checkout A...B" is a way to detach HEAD at the merge base between @@ -133,7 +135,7 @@ Updates since v1.6.6 * "git fetch --all" can now be used in place of "git remote update". * "git grep" does not rely on external grep anymore. It can use more than - one threads to accelerate the operation. + one thread to accelerate the operation. * "git grep" learned "--quiet" option. @@ -159,13 +161,13 @@ Updates since v1.6.6 * "git rebase --onto A...B" means the history is replayed on top of the merge base between A and B. - * "git rebase -i" learned new action "fixup", that squashes the change + * "git rebase -i" learned new action "fixup" that squashes the change but does not affect existing log message. - * "git rebase -i" also learned --autosquash option, that is useful + * "git rebase -i" also learned --autosquash option that is useful together with the new "fixup" action. - * "git remote" learned set-url subcommand, to update (surprise!) url + * "git remote" learned set-url subcommand that updates (surprise!) url for an existing remote nickname. * "git rerere" learned "forget path" subcommand. Together with "git @@ -200,13 +202,8 @@ release, unless otherwise noted. the branch is fully merged to its upstream branch if it is not merged to the current branch. It now deletes it in such a case. - * "git config -f <relative path>" run from a subdirectory misbehaved. - 65807ee (builtin-config: Fix crash when using "-f <relative path>" - from non-root dir, 2010-01-26) may be merged to older maintenance - branches. - - * "git fast-import" did not correctly handle large blobs that may - bust the pack size limit. + * "fiter-branch" command incorrectly said --prune-empty and --filter-commit + were incompatible; the latter should be read as --commit-filter. * When using "git status" or asking "git diff" to compare the work tree with something, they used to consider that a checked-out submodule with @@ -215,9 +212,3 @@ release, unless otherwise noted. superproject. They now consider such a change as a modification and "git diff" will append a "-dirty" to the work tree side when generating patch output or when used with the --submodule option. - --- -exec >/var/tmp/1 -O=v1.7.0-rc1-42-g3bd8de5 -echo O=$(git describe master) -git shortlog --no-merges $O..master ^maint diff --git a/Documentation/RelNotes-1.7.1.txt b/Documentation/RelNotes-1.7.1.txt new file mode 100644 index 0000000000..b0bf8366c0 --- /dev/null +++ b/Documentation/RelNotes-1.7.1.txt @@ -0,0 +1,17 @@ +Git v1.7.1 Release Notes +======================== + +Updates since v1.7.0 +-------------------- + +Fixes since v1.7.0 +------------------ + +All of the fixes in v1.7.0.X maintenance series are included in this +release, unless otherwise noted. + +--- +exec >/var/tmp/1 +echo O=$(git describe) +O=v1.7.0 +git shortlog --no-merges ^maint $O.. diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt index f74fcf3737..51cbeb7032 100644 --- a/Documentation/git-add.txt +++ b/Documentation/git-add.txt @@ -153,7 +153,7 @@ EXAMPLES and its subdirectories: + ------------ -$ git add Documentation/\\*.txt +$ git add Documentation/\*.txt ------------ + Note that the asterisk `\*` is quoted from the shell in this diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt index c3e4f12c44..c66c565bbe 100644 --- a/Documentation/git-am.txt +++ b/Documentation/git-am.txt @@ -15,7 +15,7 @@ SYNOPSIS [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>] [--reject] [-q | --quiet] [--scissors | --no-scissors] [<mbox> | <Maildir>...] -'git am' (--skip | --resolved | --abort) +'git am' (--continue | --skip | --abort) DESCRIPTION ----------- @@ -107,6 +107,7 @@ default. You can use `--no-utf8` to override this. Skip the current patch. This is only meaningful when restarting an aborted patch. +--continue:: -r:: --resolved:: After a patch failure (e.g. attempting to apply diff --git a/Documentation/git-archive.txt b/Documentation/git-archive.txt index 799c8b64bd..8d3e66626f 100644 --- a/Documentation/git-archive.txt +++ b/Documentation/git-archive.txt @@ -112,6 +112,14 @@ export-subst:: expand several placeholders when adding this file to an archive. See linkgit:gitattributes[5] for details. +Note that attributes are by default taken from the `.gitattributes` files +in the tree that is being archived. If you want to tweak the way the +output is generated after the fact (e.g. you committed without adding an +appropriate export-ignore in its `.gitattributes`), adjust the checked out +`.gitattributes` file as necessary and use `--work-tree-attributes` +option. Alternatively you can keep necessary attributes that should apply +while archiving any tree in your `$GIT_DIR/info/attributes` file. + EXAMPLES -------- git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -):: diff --git a/Documentation/git-check-ref-format.txt b/Documentation/git-check-ref-format.txt index d9a3326f58..e1c4320f02 100644 --- a/Documentation/git-check-ref-format.txt +++ b/Documentation/git-check-ref-format.txt @@ -43,7 +43,7 @@ imposes the following rules on how references are named: . They cannot contain a sequence `@{`. -- They cannot contain a `\\`. +. They cannot contain a `\`. These rules make it easy for shell script based tools to parse reference names, pathname expansion by the shell when a reference name is used diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index 73a921ca0f..bd79119dd3 100644 --- a/Documentation/git-push.txt +++ b/Documentation/git-push.txt @@ -176,12 +176,17 @@ If --porcelain is used, then each line of the output is of the form: <flag> \t <from>:<to> \t <summary> (<reason>) ------------------------------- +The status of up-to-date refs is shown only if --porcelain or --verbose +option is used. + flag:: - A single character indicating the status of the ref. This is - blank for a successfully pushed ref, `!` for a ref that was - rejected or failed to push, and '=' for a ref that was up to - date and did not need pushing (note that the status of up to - date refs is shown only when `git push` is running verbosely). + A single character indicating the status of the ref: +(space);; for a successfully pushed fast-forward; +`{plus}`;; for a successful forced update; +`-`;; for a successfully deleted ref; +`*`;; for a successfully pushed new ref; +`!`;; for a ref that was rejected or failed to push; and +`=`;; for a ref that was up to date and did not need pushing. summary:: For a successfully pushed ref, the summary shows the old and new diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt index fc731525da..d677c72d5e 100644 --- a/Documentation/git-rev-parse.txt +++ b/Documentation/git-rev-parse.txt @@ -244,7 +244,7 @@ when you run 'git merge'. * The special construct '@\{-<n>\}' means the <n>th branch checked out before the current one. -* The suffix '@{upstream}' to a ref (short form 'ref@{u}') refers to +* The suffix '@\{upstream\}' to a ref (short form 'ref@\{u\}') refers to the branch the ref is set to build on top of. Missing ref defaults to the current branch. diff --git a/Documentation/git.txt b/Documentation/git.txt index 8c5f5b05cb..01c463101b 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -43,9 +43,15 @@ unreleased) version of git, that is available from 'master' branch of the `git.git` repository. Documentation for older releases are available here: -* link:v1.6.6.1/git.html[documentation for release 1.6.6.1] +* link:v1.7.0/git.html[documentation for release 1.7.0] * release notes for + link:RelNotes-1.7.0.txt[1.7.0]. + +* link:v1.6.6.2/git.html[documentation for release 1.6.6.2] + +* release notes for + link:RelNotes-1.6.6.2.txt[1.6.6.2], link:RelNotes-1.6.6.1.txt[1.6.6.1], link:RelNotes-1.6.6.txt[1.6.6]. diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index a7d8c63427..a668143d7a 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v1.6.6.GIT +DEF_VER=v1.7.0.GIT LF=' ' @@ -1 +1 @@ -Documentation/RelNotes-1.7.0.txt
\ No newline at end of file +Documentation/RelNotes-1.7.1.txt
\ No newline at end of file diff --git a/builtin-blame.c b/builtin-blame.c index 6408ec8ee6..10f7eacf6e 100644 --- a/builtin-blame.c +++ b/builtin-blame.c @@ -2433,7 +2433,7 @@ parse_done: if (top < 1) top = lno; bottom--; - if (lno < top) + if (lno < top || lno < bottom) die("file %s has only %lu lines", path, lno); ent = xcalloc(1, sizeof(*ent)); diff --git a/builtin-grep.c b/builtin-grep.c index 26d4deb1cc..63d4b95b0d 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -861,6 +861,16 @@ int cmd_grep(int argc, const char **argv, const char *prefix) PARSE_OPT_STOP_AT_NON_OPTION | PARSE_OPT_NO_INTERNAL_HELP); + /* + * skip a -- separator; we know it cannot be + * separating revisions from pathnames if + * we haven't even had any patterns yet + */ + if (argc > 0 && !opt.pattern_list && !strcmp(argv[0], "--")) { + argv++; + argc--; + } + /* First unrecognized non-option token */ if (argc > 0 && !opt.pattern_list) { append_grep_pattern(&opt, argv[0], "command line", 0, diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index dcfe62aa02..e1d3adf405 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -445,13 +445,9 @@ static int write_one(struct sha1file *f, if (e->idx.offset || e->preferred_base) return -1; - /* - * If we are deltified, attempt to write out base object first. - * If that fails due to the pack size limit then the current - * object might still possibly fit undeltified within that limit. - */ - if (e->delta) - write_one(f, e->delta, offset); + /* if we are deltified, write out base object first. */ + if (e->delta && !write_one(f, e->delta, offset)) + return 0; e->idx.offset = *offset; size = write_object(f, e, *offset); @@ -505,9 +501,11 @@ static void write_pack_file(void) sha1write(f, &hdr, sizeof(hdr)); offset = sizeof(hdr); nr_written = 0; - for (i = 0; i < nr_objects; i++) - if (write_one(f, objects + i, &offset) == 1) - display_progress(progress_state, written); + for (; i < nr_objects; i++) { + if (!write_one(f, objects + i, &offset)) + break; + display_progress(progress_state, written); + } /* * Did we write the wrong # entries in the header? @@ -582,7 +580,7 @@ static void write_pack_file(void) written_list[j]->offset = (off_t)-1; } nr_remaining -= nr_written; - } while (nr_remaining); + } while (nr_remaining && i < nr_objects); free(written_list); stop_progress(&progress_state); diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 35acad004e..fe93747c93 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -667,7 +667,7 @@ _git_am () { local cur="${COMP_WORDS[COMP_CWORD]}" dir="$(__gitdir)" if [ -d "$dir"/rebase-apply ]; then - __gitcomp "--skip --resolved --abort" + __gitcomp "--skip --continue --resolved --abort" return fi case "$cur" in @@ -25,7 +25,8 @@ p= pass it through git-apply patch-format= format the patch(es) are in reject pass it through git-apply resolvemsg= override error message when patch failure occurs -r,resolved to be used after a patch failure +continue continue applying patches after resolving a conflict +r,resolved synonyms for --continue skip skip the current patch abort restore the original branch and abort the patching operation. committer-date-is-author-date lie about committer date @@ -318,7 +319,7 @@ do scissors=t ;; --no-scissors) scissors=f ;; - -r|--resolved) + -r|--resolved|--continue) resolved=t ;; --skip) skip=t ;; diff --git a/git-filter-branch.sh b/git-filter-branch.sh index e95845c0d6..88fb0f070e 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -207,7 +207,7 @@ t,) ,*) ;; *) - die "Cannot set --prune-empty and --filter-commit at the same time" + die "Cannot set --prune-empty and --commit-filter at the same time" esac case "$force" in diff --git a/imap-send.c b/imap-send.c index 51f371ba9f..ba72fa4b6e 100644 --- a/imap-send.c +++ b/imap-send.c @@ -1331,11 +1331,16 @@ static int git_imap_config(const char *key, const char *val, void *cb) if (strncmp(key, imap_key, sizeof imap_key - 1)) return 0; - if (!val) - return config_error_nonbool(key); - key += sizeof imap_key - 1; + /* check booleans first, and barf on others */ + if (!strcmp("sslverify", key)) + server.ssl_verify = git_config_bool(key, val); + else if (!strcmp("preformattedhtml", key)) + server.use_html = git_config_bool(key, val); + else if (!val) + return config_error_nonbool(key); + if (!strcmp("folder", key)) { imap_folder = xstrdup(val); } else if (!strcmp("host", key)) { @@ -1356,10 +1361,6 @@ static int git_imap_config(const char *key, const char *val, void *cb) server.port = git_config_int(key, val); else if (!strcmp("tunnel", key)) server.tunnel = xstrdup(val); - else if (!strcmp("sslverify", key)) - server.ssl_verify = git_config_bool(key, val); - else if (!strcmp("preformattedHTML", key)) - server.use_html = git_config_bool(key, val); return 0; } diff --git a/t/t3902-quoted.sh b/t/t3902-quoted.sh index 14da45fe5a..29103f65dc 100755 --- a/t/t3902-quoted.sh +++ b/t/t3902-quoted.sh @@ -25,7 +25,7 @@ for_each_name () { for name in \ Name "Name and a${LF}LF" "Name and an${HT}HT" "Name${DQ}" \ "$FN$HT$GN" "$FN$LF$GN" "$FN $GN" "$FN$GN" "$FN$DQ$GN" \ - "With SP in it" "caractère spécial/file" + "With SP in it" "$FN/file" do eval "$1" done @@ -33,7 +33,7 @@ for_each_name () { test_expect_success setup ' - mkdir "caractère spécial" && + mkdir "$FN" && for_each_name "echo initial >\"\$name\"" git add . && git commit -q -m Initial && @@ -51,11 +51,11 @@ Name "Name and an\tHT" "Name\"" With SP in it -"caract\303\250re sp\303\251cial/file" "\346\277\261\351\207\216\t\347\264\224" "\346\277\261\351\207\216\n\347\264\224" "\346\277\261\351\207\216 \347\264\224" "\346\277\261\351\207\216\"\347\264\224" +"\346\277\261\351\207\216/file" "\346\277\261\351\207\216\347\264\224" EOF @@ -65,11 +65,11 @@ Name "Name and an\tHT" "Name\"" With SP in it -caractère spécial/file "濱野\t純" "濱野\n純" 濱野 純 "濱野\"純" +濱野/file 濱野純 EOF diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index 1058d981dc..7649b810b1 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -389,7 +389,7 @@ test_expect_success 'verify resulting packs' ' test_expect_success 'tolerate packsizelimit smaller than biggest object' ' git config pack.packSizeLimit 1 && packname_11=$(git pack-objects test-11 <obj-list) && - test 3 = $(ls test-11-*.pack | wc -l) + test 5 = $(ls test-11-*.pack | wc -l) ' test_expect_success 'verify resulting packs' ' diff --git a/t/t7002-grep.sh b/t/t7002-grep.sh index 7144f815c0..0b583cbfc1 100755 --- a/t/t7002-grep.sh +++ b/t/t7002-grep.sh @@ -434,4 +434,37 @@ test_expect_success 'grep -Fi' ' test_cmp expected actual ' +test_expect_success 'setup double-dash tests' ' +cat >double-dash <<EOF && +-- +-> +other +EOF +git add double-dash +' + +cat >expected <<EOF +double-dash:-> +EOF +test_expect_success 'grep -- pattern' ' + git grep -- "->" >actual && + test_cmp expected actual +' +test_expect_success 'grep -- pattern -- pathspec' ' + git grep -- "->" -- double-dash >actual && + test_cmp expected actual +' +test_expect_success 'grep -e pattern -- path' ' + git grep -e "->" -- double-dash >actual && + test_cmp expected actual +' + +cat >expected <<EOF +double-dash:-- +EOF +test_expect_success 'grep -e -- -- path' ' + git grep -e -- -- double-dash >actual && + test_cmp expected actual +' + test_done diff --git a/t/t8003-blame.sh b/t/t8003-blame.sh index ad834f200a..3bbddd03cb 100755 --- a/t/t8003-blame.sh +++ b/t/t8003-blame.sh @@ -157,4 +157,14 @@ EOF git --no-pager blame $COMMIT -- uno >/dev/null ' +test_expect_success 'blame -L with invalid start' ' + test_must_fail git blame -L5 tres 2>errors && + grep "has only 2 lines" errors +' + +test_expect_success 'blame -L with invalid end' ' + test_must_fail git blame -L1,5 tres 2>errors && + grep "has only 2 lines" errors +' + test_done |