diff --git a/Documentation/RelNotes/1.7.5.3.txt b/Documentation/RelNotes/1.7.5.3.txt new file mode 100644 index 0000000000..9c03353af2 --- /dev/null +++ b/Documentation/RelNotes/1.7.5.3.txt @@ -0,0 +1,32 @@ +Git v1.7.5.3 Release Notes +========================== + +Fixes since v1.7.5.2 +-------------------- + + * The bash completion scripts should correctly work using zsh's bash + completion emulation layer now. + + * Setting $(prefix) in config.mak did not affect where etc/gitconfig + file is read from, even though passing it from the command line of + $(MAKE) did. + + * The logic to handle "&" (expand to UNIX username) in GECOS field + miscounted the length of the name it formatted. + + * "git cherry-pick -s resolve" failed to cherry-pick a root commit. + + * "git diff --word-diff" misbehaved when diff.suppress-blank-empty was + in effect. + + * "git log --stdin path" with an input that has additional pathspec + used to corrupt memory. + + * "git send-pack" (hence "git push") over smalt-HTTP protocol could + deadlock when the client side pack-object died early. + + * Compressed tarball gitweb generates used to be made with the timestamp + of the tarball generation; this was bad because snapshot from the same + tree should result in a same tarball. + +And other minor fixes and documentation updates. diff --git a/Documentation/RelNotes/1.7.6.txt b/Documentation/RelNotes/1.7.6.txt index 3d5ff4d9b2..7e1c7f1773 100644 --- a/Documentation/RelNotes/1.7.6.txt +++ b/Documentation/RelNotes/1.7.6.txt @@ -6,7 +6,8 @@ Updates since v1.7.5 * Various git-svn updates. - * Updates the way content tags are handled in gitweb. + * Updates the way content tags are handled in gitweb. Also adds + a UI to choose common timezone for displaying the dates. * Similar to branch names, tagnames that begin with "-" are now disallowed. @@ -16,6 +17,15 @@ Updates since v1.7.5 * The scripting part of the codebase is getting prepared for i18n/l10n. + * Pushing and pulling from a repository with large number of refs that + point to identical commits are optimized by not listing the same commit + during the common ancestor negotiation exchange with the other side. + + * Adding a file larger than core.bigfilethreshold (defaults to 1/2 Gig) + using "git add" will send the contents straight to a packfile without + having to hold it and its compressed representation both at the same + time in memory. + * Processes spawned by "[alias] = !process" in the configuration can inspect GIT_PREFIX environment variable to learn where in the working tree the original command was invoked. @@ -66,6 +76,9 @@ Updates since v1.7.5 "--show-notes" option. Unlike "--show-notes", "--notes=" does not imply showing the default notes. + * They also learned a log.abbrevCommit configuration variable to augment + the --abbrev-commit command line option. + * "git ls-remote" learned "--exit-code" option to consider it a different kind of error when no remote ref to be shown. @@ -93,10 +106,6 @@ Updates since v1.7.5 still in a conflicted state during a merge, to avoid using information that is not final and possibly corrupt with conflict markers. - * Compressed tarball gitweb generates is made without the timestamp of - the tarball generation; snapshot from the same tree should result in - a same tarball. - Also contains various documentation updates and minor miscellaneous changes. @@ -107,45 +116,16 @@ Fixes since v1.7.5 Unless otherwise noted, all the fixes in 1.7.5.X maintenance track are included in this release. - * Setting $(prefix) in config.mak did not affect where etc/gitconfig - file is read from, even though passing it from the command line of - $(MAKE) did. - (merge kk/maint-prefix-in-config-mak later) - - * The bash completion scripts should correctly work using zsh's bash - completion emulation layer now. - (merge fc/completion-zsh later) - - * The logic to handle "&" (expand to UNIX username) in GECOS field - miscounted the length of the name it formatted. - (merge rg/copy-gecos-username later) - * The single-key mode of "git add -p" was easily fooled into thinking that it was told to add everthing ('a') when up-arrow was pressed by mistake. (merge tr/add-i-no-escape later) - * "git cherry-pick -s resolve" failed to cherry-pick a root commit. - (merge jk/cherry-pick-root-with-resolve later) - * "git config" used to choke with an insanely long line. (merge ef/maint-strbuf-init later) - * "git diff --word-diff" misbehaved when diff.suppress-blank-empty was - in effect. - (merge jm/maint-diff-words-with-sbe later) - - * "git log --stdin path" with an input that has additional pathspec - used to corrupt memory. - (merge jc/maint-pathspec-stdin-and-cmdline later) - - * "git send-pack" (hence "git push") over smalt-HTTP protocol could - deadlock when the client side pack-object died early. - (merge js/maint-send-pack-stateless-rpc-deadlock-fix later) - (merge jk/git-connection-deadlock-fix later) - --- exec >/var/tmp/1 echo O=$(git describe master) -O=v1.7.5.2-352-g4961210 +O=v1.7.5.3-365-g7eacc2b git shortlog --no-merges ^maint ^$O master diff --git a/Documentation/git.txt b/Documentation/git.txt index 19d4deff70..65317cce18 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -44,9 +44,10 @@ unreleased) version of git, that is available from 'master' branch of the `git.git` repository. Documentation for older releases are available here: -* link:v1.7.5.2/git.html[documentation for release 1.7.5.2] +* link:v1.7.5.3/git.html[documentation for release 1.7.5.3] * release notes for + link:RelNotes/1.7.5.3.txt[1.7.5.3], link:RelNotes/1.7.5.2.txt[1.7.5.2], link:RelNotes/1.7.5.1.txt[1.7.5.1], link:RelNotes/1.7.5.txt[1.7.5]. diff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch.c index 14feac7fe1..9473aed2bb 100644 --- a/compat/fnmatch/fnmatch.c +++ b/compat/fnmatch/fnmatch.c @@ -127,6 +127,10 @@ extern char *getenv (); extern int errno; # endif +# ifndef NULL +# define NULL 0 +# endif + /* This function doesn't exist on most systems. */ # if !defined HAVE___STRCHRNUL && !defined _LIBC diff --git a/rerere.c b/rerere.c index dee2cb1514..e3407cf334 100644 --- a/rerere.c +++ b/rerere.c @@ -739,6 +739,7 @@ void rerere_gc(struct string_list *rr) if (then < now - cutoff * 86400) string_list_append(&to_remove, e->d_name); } + closedir(dir); for (i = 0; i < to_remove.nr; i++) unlink_rr_item(to_remove.items[i].string); string_list_clear(&to_remove, 0); diff --git a/t/t0081-line-buffer.sh b/t/t0081-line-buffer.sh index 5067d1e15b..bd83ed371a 100755 --- a/t/t0081-line-buffer.sh +++ b/t/t0081-line-buffer.sh @@ -2,74 +2,14 @@ test_description="Test the svn importer's input handling routines. -These tests exercise the line_buffer library, but their real purpose -is to check the assumptions that library makes of the platform's input -routines. Processes engaged in bi-directional communication would -hang if fread or fgets is too greedy. +These tests provide some simple checks that the line_buffer API +behaves as advertised. While at it, check that input of newlines and null bytes are handled correctly. " . ./test-lib.sh -test -n "$GIT_REMOTE_SVN_TEST_BIG_FILES" && test_set_prereq EXPENSIVE - -generate_tens_of_lines () { - tens=$1 && - line=$2 && - - i=0 && - while test $i -lt "$tens" - do - for j in a b c d e f g h i j - do - echo "$line" - done && - : $((i = $i + 1)) || - return - done -} - -long_read_test () { - : each line is 10 bytes, including newline && - line=abcdefghi && - echo "$line" >expect && - - if ! test_declared_prereq PIPE - then - echo >&4 "long_read_test: need to declare PIPE prerequisite" - return 127 - fi && - tens_of_lines=$(($1 / 100 + 1)) && - lines=$(($tens_of_lines * 10)) && - readsize=$((($lines - 1) * 10 + 3)) && - copysize=7 && - rm -f input && - mkfifo input && - { - ( - generate_tens_of_lines $tens_of_lines "$line" && - exec sleep 100 - ) >input & - } && - test-line-buffer input <<-EOF >output && - binary $readsize - copy $copysize - EOF - kill $! && - test_line_count = $lines output && - tail -n 1 actual && - test_cmp expect actual -} - -test_expect_success 'setup: have pipes?' ' - rm -f frob && - if mkfifo frob - then - test_set_prereq PIPE - fi -' - test_expect_success 'hello world' ' echo ">HELLO" >expect && test-line-buffer <<-\EOF >actual && @@ -79,21 +19,6 @@ test_expect_success 'hello world' ' test_cmp expect actual ' -test_expect_success PIPE '0-length read, no input available' ' - printf ">" >expect && - rm -f input && - mkfifo input && - { - sleep 100 >input & - } && - test-line-buffer input <<-\EOF >actual && - binary 0 - copy 0 - EOF - kill $! && - test_cmp expect actual -' - test_expect_success '0-length read, send along greeting' ' echo ">HELLO" >expect && test-line-buffer <<-\EOF >actual && @@ -104,33 +29,6 @@ test_expect_success '0-length read, send along greeting' ' test_cmp expect actual ' -test_expect_success PIPE '1-byte read, no input available' ' - printf ">%s" ab >expect && - rm -f input && - mkfifo input && - { - ( - printf "%s" a && - printf "%s" b && - exec sleep 100 - ) >input & - } && - test-line-buffer input <<-\EOF >actual && - binary 1 - copy 1 - EOF - kill $! && - test_cmp expect actual -' - -test_expect_success PIPE 'long read (around 8192 bytes)' ' - long_read_test 8192 -' - -test_expect_success PIPE,EXPENSIVE 'longer read (around 65536 bytes)' ' - long_read_test 65536 -' - test_expect_success 'read from file descriptor' ' rm -f input && echo hello >expect &&