Merge branch 'master' into next

* master:
  Git 1.7.4-rc0
  Prepare for 1.7.3.5
  t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
  Fix false positives in t3404 due to SHELL=/bin/false
  setup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd
  close file on error in read_mmfile()
This commit is contained in:
Junio C Hamano
2010-12-28 13:53:51 -08:00
11 changed files with 86 additions and 14 deletions

1
.gitignore vendored
View File

@@ -177,6 +177,7 @@
/test-sha1
/test-sigchain
/test-string-pool
/test-subprocess
/test-svn-fe
/test-treap
/common-cmds.h

View File

@@ -0,0 +1,32 @@
Git 1.7.3.5 Release Notes
=========================
* The xfuncname pattern used by "git diff" and "git grep" to show the
last notable line in context were broken for python and ruby for a long
time.
* "git merge" into an unborn branch removed an untracked file "foo" from
the working tree when merged branch had "foo" (this fix was already in
1.7.3.3 but was omitted from the release notes by mistake).
* "git status -s" did not quote unprintable characters in paths as
documented.
* "git am --abort" used to always reset to the commit at the beginning of
the last "am" invocation that has stopped, losing any unrelated commits
that may have been made since then. Now it refrains from doing so and
instead issues a warning.
* "git blame" incorrectly reused bogusly cached result of textconv
filter for files from the working tree.
* "git commit" used to abort after the user edited the log message
when the committer information was not correctly set up. It now
aborts before starting the editor.
* "git commit --date=invalid" used to silently ignore the incorrectly
specified date; it is now diagnosed as an error.
* "git rebase --skip" to skip the last commit in a series used to fail
to run post-rewrite hook and to copy notes from old commits that have
successfully been rebased so far. Now it do (backmerge ef88ad2).

View File

@@ -26,8 +26,9 @@ Updates since v1.7.3
cover letter of the previous series; this has been changed to make
the patches in the new series replies to the new cover letter.
* Bash completion script in contrib/ has been adjusted to be also
usable by zsh.
* Bash completion script in contrib/ has been adjusted to be usable with
Bash 4 (options with '=value' didn't complete) It has been also made
usable with zsh.
* Different pagers can be chosen depending on which subcommand is
being run under the pager, using "pager.<subcommand>" variable.
@@ -76,8 +77,8 @@ Updates since v1.7.3
use the new --empty option to be more explicit instead.
* "git repack -f" does not spend cycles to recompress objects in the
non-delta representation anymore (use -F if you really mean it when
e.g. you changed the compression level).
non-delta representation anymore (use -F if you really mean it
e.g. after you changed the core.compression variable setting).
* "git merge --log" used to limit the resulting merge log to 20
entries; this is now customizable by giving e.g. "--log=47".
@@ -91,8 +92,9 @@ Updates since v1.7.3
* The default "recursive" merge strategy learned --rename-threshold
option to influence the rename detection, similar to the -M option
of "git diff". E.g. "git merge -Xrename-threshold=50% ..." to use
this.
of "git diff". From "git merge" frontend, "-X<strategy option>"
interface, e.g. "git merge -Xrename-threshold=50% ...", can be used
to trigger this.
* The "recursive" strategy also learned to ignore various whitespace
changes; the most notable is -Xignore-space-at-eol.
@@ -130,9 +132,6 @@ release, unless otherwise noted.
me or by her; instead it looked for commits written by me and by
her, which is impossible.
* "git merge" into an unborn branch removed an untracked file "foo"
from the working tree when merged branch had "foo" (2caf20c..172b642).
* "git push --progress" shows progress indicators now.
* "git repack" places its temporary packs under $GIT_OBJECT_DIRECTORY/pack
@@ -143,6 +142,6 @@ release, unless otherwise noted.
---
exec >/var/tmp/1
O=v1.7.3.4-567-g38a5932
O=v1.7.3.4-687-g2cd900f
echo O=$(git describe master)
git shortlog --no-merges ^maint ^$O master

View File

@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
DEF_VER=v1.7.3.GIT
DEF_VER=v1.7.4-rc0
LF='
'

View File

@@ -431,6 +431,7 @@ TEST_PROGRAMS_NEED_X += test-run-command
TEST_PROGRAMS_NEED_X += test-sha1
TEST_PROGRAMS_NEED_X += test-sigchain
TEST_PROGRAMS_NEED_X += test-string-pool
TEST_PROGRAMS_NEED_X += test-subprocess
TEST_PROGRAMS_NEED_X += test-svn-fe
TEST_PROGRAMS_NEED_X += test-treap
TEST_PROGRAMS_NEED_X += test-index-version

View File

@@ -221,6 +221,14 @@ void setup_work_tree(void)
git_dir = make_absolute_path(git_dir);
if (!work_tree || chdir(work_tree))
die("This operation must be run in a work tree");
/*
* Make sure subsequent git processes find correct worktree
* if $GIT_WORK_TREE is set relative
*/
if (getenv(GIT_WORK_TREE_ENVIRONMENT))
setenv(GIT_WORK_TREE_ENVIRONMENT, ".", 1);
set_git_dir(make_relative_path(git_dir, work_tree));
initialized = 1;
}

View File

@@ -340,4 +340,11 @@ test_expect_success 'make_relative_path handles double slashes in GIT_DIR' '
git --git-dir="$(pwd)//repo.git" --work-tree="$(pwd)" add dummy_file
'
test_expect_success 'relative $GIT_WORK_TREE and git subprocesses' '
GIT_DIR=repo.git GIT_WORK_TREE=repo.git/work \
test-subprocess --setup-work-tree rev-parse --show-toplevel >actual &&
echo "$TRASH_DIRECTORY/repo.git/work" >expected &&
test_cmp expected actual
'
test_done

View File

@@ -71,8 +71,9 @@ test_expect_success 'setup' '
# "exec" commands are ran with the user shell by default, but this may
# be non-POSIX. For example, if SHELL=zsh then ">file" doesn't work
# to create a file. Unseting SHELL avoids such non-portable behavior
# in tests.
# in tests. It must be exported for it to take effect where needed.
SHELL=
export SHELL
test_expect_success 'rebase -i with the exec command' '
git checkout master &&

View File

@@ -319,7 +319,7 @@ test_expect_success $PREREQ 'In-Reply-To without --chain-reply-to' '
git send-email \
--from="Example <nobody@example.com>" \
--to=nobody@example.com \
--no-chain-reply-to \
--nochain-reply-to \
--in-reply-to="$(cat expect)" \
--smtp-server="$(pwd)/fake.sendmail" \
$patches $patches $patches \

21
test-subprocess.c Normal file
View File

@@ -0,0 +1,21 @@
#include "cache.h"
#include "run-command.h"
int main(int argc, char **argv)
{
const char *prefix;
struct child_process cp;
int nogit = 0;
prefix = setup_git_directory_gently(&nogit);
if (nogit)
die("No git repo found");
if (!strcmp(argv[1], "--setup-work-tree")) {
setup_work_tree();
argv++;
}
memset(&cp, 0, sizeof(cp));
cp.git_cmd = 1;
cp.argv = (const char **)argv+1;
return run_command(&cp);
}

View File

@@ -212,8 +212,10 @@ int read_mmfile(mmfile_t *ptr, const char *filename)
return error("Could not open %s", filename);
sz = xsize_t(st.st_size);
ptr->ptr = xmalloc(sz ? sz : 1);
if (sz && fread(ptr->ptr, sz, 1, f) != 1)
if (sz && fread(ptr->ptr, sz, 1, f) != 1) {
fclose(f);
return error("Could not read %s", filename);
}
fclose(f);
ptr->size = sz;
return 0;