From 6908e999468d7eb531a1609cee37673c5d3ca04f Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Wed, 30 Mar 2011 03:11:41 -0500 Subject: [PATCH 1/5] Revert "t0081 (line-buffer): add buffering tests" This (morally) reverts commit d280f68313eecb8b3838c70641a246382d5e5343, which added some tests that are a pain to maintain and are not likely to find bugs in git. Helped-by: Johannes Sixt Signed-off-by: Jonathan Nieder Acked-by: Jeff King --- t/t0081-line-buffer.sh | 106 +---------------------------------------- 1 file changed, 2 insertions(+), 104 deletions(-) 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 && From a02cf90144293f4d7885be7f1d10240576aa161b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 26 May 2011 09:25:47 -0700 Subject: [PATCH 2/5] compat/fnmatch/fnmatch.c: give a fall-back definition for NULL Somebody tried to compile fnmatch.c compatibility file on Interix and got an error because no header included in the file on that platform defined NULL. It usually comes from stddef.h and indirectly from other headers like string.h, unistd.h, stdio.h, stdlib.h, etc., but with the way we compile this file from our Makefile, inclusion of the header files that are expected to define NULL in fnmatch.c do not happen because they are protected with "#ifdef STDC_HEADERS", etc. which we do not pass. As the least-impact workaround, give a fall-back definition when none of the headers define NULL. Noticed-by: Markus Duft Signed-off-by: Junio C Hamano --- compat/fnmatch/fnmatch.c | 4 ++++ 1 file changed, 4 insertions(+) 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 From 3c3e0b3c41f4c975828cf51d661614e45bf80dc0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 26 May 2011 09:45:29 -0700 Subject: [PATCH 3/5] Git 1.7.5.3 Signed-off-by: Junio C Hamano --- Documentation/RelNotes/1.7.5.3.txt | 32 ++++++++++++++++++++++++++++++ Documentation/git.txt | 3 ++- GIT-VERSION-GEN | 2 +- RelNotes | 2 +- 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 Documentation/RelNotes/1.7.5.3.txt 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/git.txt b/Documentation/git.txt index e639c8315d..504e1b1187 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/GIT-VERSION-GEN b/GIT-VERSION-GEN index fa54b5dd6e..85e25a6dd8 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v1.7.5.2 +DEF_VER=v1.7.5.3 LF=' ' diff --git a/RelNotes b/RelNotes index 430d7f1b62..bb805da971 120000 --- a/RelNotes +++ b/RelNotes @@ -1 +1 @@ -Documentation/RelNotes/1.7.5.2.txt \ No newline at end of file +Documentation/RelNotes/1.7.5.3.txt \ No newline at end of file From 665b051b904fc451088d74dd37dc314f7099faba Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 26 May 2011 10:41:33 -0700 Subject: [PATCH 4/5] Update 1.7.6 draft release notes Signed-off-by: Junio C Hamano --- Documentation/RelNotes/1.7.6.txt | 50 ++++++++++---------------------- 1 file changed, 15 insertions(+), 35 deletions(-) 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 From a9930e359c45302f92639e8cd0a61c9c912e0b22 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Thu, 26 May 2011 15:55:50 +0200 Subject: [PATCH 5/5] plug a DIR buffer leak in rerere.c Signed-off-by: Jim Meyering Signed-off-by: Junio C Hamano --- rerere.c | 1 + 1 file changed, 1 insertion(+) 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);