Merge commit 'v1.6.3.1' into devel

This commit is contained in:
Johannes Schindelin
2009-05-15 00:30:01 +02:00
9 changed files with 55 additions and 16 deletions

View File

@@ -0,0 +1,10 @@
GIT v1.6.3.1 Release Notes
==========================
Fixes since v1.6.3
------------------
* "git checkout -b new-branch" with a staged change in the index
incorrectly primed the in-index cache-tree, resulting a wrong tree
object to be written out of the index. This is a grave regression
since the last 1.6.2.X maintenance release.

View File

@@ -149,7 +149,7 @@ then the cloned repository will become corrupt.
part of the source repository is used if no directory is
explicitly given ("repo" for "/path/to/repo.git" and "foo"
for "host.xz:foo/.git"). Cloning into an existing directory
is not allowed.
is only allowed if the directory is empty.
:git-clone: 1
include::urls.txt[]

View File

@@ -69,7 +69,8 @@ OPTIONS
--add::
Adds a new line to the option without altering any existing
values. This is the same as providing '^$' as the value_regex.
values. This is the same as providing '^$' as the value_regex
in `--replace-all`.
--get::
Get the value for a given key (optionally filtered by a regex
@@ -155,7 +156,7 @@ See also <<FILES>>.
When the color setting for `name` is undefined, the command uses
`color.ui` as fallback.
--get-color name default::
--get-color name [default]::
Find the color configured for `name` (e.g. `color.diff.new`) and
output it as the ANSI color escape sequence to the standard

View File

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

View File

@@ -1 +1 @@
Documentation/RelNotes-1.6.3.txt
Documentation/RelNotes-1.6.3.1.txt

View File

@@ -180,7 +180,7 @@ static int write_tar_entry(struct archiver_args *args,
sprintf(header.mode, "%07o", mode & 07777);
sprintf(header.size, "%011lo", S_ISREG(mode) ? size : 0);
sprintf(header.mtime, "%011lo", args->time);
sprintf(header.mtime, "%011lo", (unsigned long) args->time);
sprintf(header.uid, "%07o", 0);
sprintf(header.gid, "%07o", 0);

View File

@@ -365,17 +365,14 @@ static int merge_working_tree(struct checkout_opts *opts,
int ret;
struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
int newfd = hold_locked_index(lock_file, 1);
int reprime_cache_tree = 0;
if (read_cache() < 0)
return error("corrupt index file");
cache_tree_free(&active_cache_tree);
if (opts->force) {
ret = reset_tree(new->commit->tree, opts, 1);
if (ret)
return ret;
reprime_cache_tree = 1;
} else {
struct tree_desc trees[2];
struct tree *tree;
@@ -411,9 +408,7 @@ static int merge_working_tree(struct checkout_opts *opts,
init_tree_desc(&trees[1], tree->buffer, tree->size);
ret = unpack_trees(2, trees, &topts);
if (ret != -1) {
reprime_cache_tree = 1;
} else {
if (ret == -1) {
/*
* Unpack couldn't do a trivial merge; either
* give up or do a real merge, depending on
@@ -457,8 +452,6 @@ static int merge_working_tree(struct checkout_opts *opts,
}
}
if (reprime_cache_tree)
prime_cache_tree(&active_cache_tree, new->commit->tree);
if (write_cache(newfd, active_cache, active_nr) ||
commit_locked_index(lock_file))
die("unable to write new index file");

View File

@@ -113,6 +113,10 @@ case "${1:-.}${2:-.}${3:-.}" in
src1=`git-unpack-file $2`
git merge-file "$src1" "$orig" "$src2"
ret=$?
msg=
if [ $ret -ne 0 ]; then
msg='content conflict'
fi
# Create the working tree file, using "our tree" version from the
# index, and then store the result of the merge.
@@ -120,7 +124,10 @@ case "${1:-.}${2:-.}${3:-.}" in
rm -f -- "$orig" "$src1" "$src2"
if [ "$6" != "$7" ]; then
echo "ERROR: Permissions conflict: $5->$6,$7."
if [ -n "$msg" ]; then
msg="$msg, "
fi
msg="${msg}permissions conflict: $5->$6,$7"
ret=1
fi
if [ "$1" = '' ]; then
@@ -128,7 +135,7 @@ case "${1:-.}${2:-.}${3:-.}" in
fi
if [ $ret -ne 0 ]; then
echo "ERROR: Merge conflict in $4"
echo "ERROR: $msg in $4"
exit 1
fi
exec git update-index -- "$4"

28
t/t2014-switch.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/sh
test_description='Peter MacMillan'
. ./test-lib.sh
test_expect_success setup '
echo Hello >file &&
git add file &&
test_tick &&
git commit -m V1 &&
echo Hello world >file &&
git add file &&
git checkout -b other
'
test_expect_success 'check all changes are staged' '
git diff --exit-code
'
test_expect_success 'second commit' '
git commit -m V2
'
test_expect_success 'check' '
git diff --cached --exit-code
'
test_done