mirror of
https://github.com/git/git.git
synced 2026-03-13 18:33:25 +01:00
Merge commit 'junio/master' into devel
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
;;
|
||||
*)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user