mirror of
https://github.com/git/git.git
synced 2026-04-02 13:00:08 +02:00
Merge commit 'v1.6.3.1' into devel
This commit is contained in:
10
Documentation/RelNotes-1.6.3.1.txt
Normal file
10
Documentation/RelNotes-1.6.3.1.txt
Normal 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.
|
||||
@@ -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[]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
GVF=GIT-VERSION-FILE
|
||||
DEF_VER=v1.6.3.GIT
|
||||
DEF_VER=v1.6.3.1
|
||||
|
||||
LF='
|
||||
'
|
||||
|
||||
2
RelNotes
2
RelNotes
@@ -1 +1 @@
|
||||
Documentation/RelNotes-1.6.3.txt
|
||||
Documentation/RelNotes-1.6.3.1.txt
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
28
t/t2014-switch.sh
Executable 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
|
||||
Reference in New Issue
Block a user