Merge commit 'junio/master' into devel

This commit is contained in:
Steffen Prohaska
2008-12-25 12:20:58 +01:00
5 changed files with 84 additions and 29 deletions

View File

@@ -255,6 +255,10 @@ release, unless otherwise noted.
when acquiring a lock from the server (this may need to be backported to
older releases later).
* After "git rebase -p" stopped with conflicts while replaying a merge,
"git rebase --continue" did not work (may need to be backported to older
releases).
* "git revert" records relative to which parent a revert was made when
reverting a merge. Together with new documentation that explains issues
around reverting a merge and merging from the updated branch later, this

View File

@@ -43,6 +43,11 @@ unreleased) version of git, that is available from 'master'
branch of the `git.git` repository.
Documentation for older releases are available here:
* link:v1.6.1/git.html[documentation for release 1.6.1]
* release notes for
link:RelNotes-1.6.1.txt[1.6.1].
* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
* release notes for

View File

@@ -115,9 +115,18 @@ mark_action_done () {
}
make_patch () {
parent_sha1=$(git rev-parse --verify "$1"^) ||
die "Cannot get patch for $1^"
git diff-tree -p "$parent_sha1".."$1" > "$DOTEST"/patch
sha1_and_parents="$(git rev-list --parents -1 "$1")"
case "$sha1_and_parents" in
?*' '?*' '?*)
git diff --cc $sha1_and_parents
;;
?*' '?*)
git diff-tree -p "$1^!"
;;
*)
echo "Root commit"
;;
esac > "$DOTEST"/patch
test -f "$DOTEST"/message ||
git cat-file commit "$1" | sed "1,/^$/d" > "$DOTEST"/message
test -f "$DOTEST"/author-script ||
@@ -256,9 +265,8 @@ pick_one_preserving_merges () {
output git merge $STRATEGY -m "$msg" \
$new_parents
then
git rerere
printf "%s\n" "$msg" > "$GIT_DIR"/MERGE_MSG
die Error redoing merge $sha1
die_with_patch $sha1 "Error redoing merge $sha1"
fi
;;
*)

View File

@@ -11,15 +11,23 @@ Run "git rebase -p" and check that merges are properly carried along
GIT_AUTHOR_EMAIL=bogus_email_address
export GIT_AUTHOR_EMAIL
#echo 'Setting up:
# Clone 1 (trivial merge):
#
#A1--A2 <-- origin/master
# \ \
# B1--M <-- topic
# \
# B2 <-- origin/topic
# A1--A2 <-- origin/master
# \ \
# B1--M <-- topic
# \
# B2 <-- origin/topic
#
#'
# Clone 2 (conflicting merge):
#
# A1--A2--B3 <-- origin/master
# \ \
# B1------M <-- topic
# \
# B2 <-- origin/topic
#
# In both cases, 'topic' is rebased onto 'origin/topic'.
test_expect_success 'setup for merge-preserving rebase' \
'echo First > A &&
@@ -37,12 +45,19 @@ test_expect_success 'setup for merge-preserving rebase' \
cd clone1 &&
git checkout -b topic origin/topic &&
git merge origin/master &&
cd ..
cd .. &&
git clone ./. clone2
echo Fifth > B &&
git add B &&
git commit -m "Add different B" &&
git clone ./. clone2 &&
cd clone2 &&
git checkout -b topic origin/topic &&
git merge origin/master &&
test_must_fail git merge origin/master &&
echo Resolved > B &&
git add B &&
git commit -m "Merge origin/master into topic" &&
cd .. &&
git checkout topic &&
@@ -51,11 +66,30 @@ test_expect_success 'setup for merge-preserving rebase' \
'
test_expect_success 'rebase -p fakes interactive rebase' '
cd clone2 &&
(
cd clone1 &&
git fetch &&
git rebase -p origin/topic &&
test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&
test 1 = $(git rev-list --all --pretty=oneline | grep "Merge commit" | wc -l)
)
'
test_expect_success '--continue works after a conflict' '
(
cd clone2 &&
git fetch &&
test_must_fail git rebase -p origin/topic &&
test 2 = $(git ls-files B | wc -l) &&
echo Resolved again > B &&
test_must_fail git rebase --continue &&
grep "^@@@ " .git/rebase-merge/patch &&
git add B &&
git rebase --continue &&
test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&
test 1 = $(git rev-list --all --pretty=oneline | grep "Add different" | wc -l) &&
test 1 = $(git rev-list --all --pretty=oneline | grep "Merge origin" | wc -l)
)
'
test_done

View File

@@ -60,21 +60,25 @@ do
'
done
test_expect_success 'ISO-8859-1 should match UTF-8 in svn' '
(
cd ISO-8859-1 &&
compare_svn_head_with "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
)
'
for H in EUCJP ISO-2022-JP
do
test_expect_success '$H should match UTF-8 in svn' '
if locale -a |grep -q en_US.utf8; then
test_expect_success 'ISO-8859-1 should match UTF-8 in svn' '
(
cd $H &&
compare_svn_head_with "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
cd ISO-8859-1 &&
compare_svn_head_with "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
)
'
done
for H in EUCJP ISO-2022-JP
do
test_expect_success '$H should match UTF-8 in svn' '
(
cd $H &&
compare_svn_head_with "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
)
'
done
else
say "UTF-8 locale not available, test skipped"
fi
test_done