mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
cc612c476f
Many tests fixed the commit date of their changesets at '1000000 0' or similar. However testing with "Mon Jan 12 13:46:40 1970 +0000" is not better than testing with "Thu Jan 01 00:00:00 1970 +0000", which is the default run-tests.py installs. Removing the unnecessary flag removes some clutter and will hopefully make it clearer what the tests are really trying to test. Some tests did not even change their output when the dates were changed, in which case the -d flag was truly irrelevant. Dates used in sequence (such as '0 0', '1 0', etc...) were left alone since they may make the test easier to understand.
318 lines
5.3 KiB
Bash
Executable File
318 lines
5.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
echo "[extensions]" >> $HGRCPATH
|
|
echo "graphlog=" >> $HGRCPATH
|
|
|
|
mkdir a
|
|
cd a
|
|
hg init
|
|
echo foo > t1
|
|
hg add t1
|
|
hg commit -m "1"
|
|
|
|
cd ..
|
|
hg clone a b
|
|
|
|
cd a
|
|
echo foo > t2
|
|
hg add t2
|
|
hg commit -m "2"
|
|
|
|
cd ../b
|
|
echo foo > t3
|
|
hg add t3
|
|
hg commit -m "3"
|
|
|
|
hg push ../a
|
|
hg pull ../a
|
|
hg push ../a
|
|
hg merge
|
|
hg commit -m "4"
|
|
hg push ../a
|
|
cd ..
|
|
|
|
hg init c
|
|
cd c
|
|
for i in 0 1 2; do
|
|
echo $i >> foo
|
|
hg ci -Am $i
|
|
done
|
|
cd ..
|
|
|
|
hg clone c d
|
|
cd d
|
|
for i in 0 1; do
|
|
hg co -C $i
|
|
echo d-$i >> foo
|
|
hg ci -m d-$i
|
|
done
|
|
|
|
HGMERGE=true hg merge 3
|
|
hg ci -m c-d
|
|
|
|
hg push ../c; echo $?
|
|
hg push -r 2 ../c; echo $?
|
|
hg push -r 3 ../c; echo $?
|
|
hg push -r 3 -r 4 ../c; echo $?
|
|
hg push -f -r 3 -r 4 ../c; echo $?
|
|
hg push -r 5 ../c; echo $?
|
|
hg in ../c
|
|
|
|
echo % issue 450
|
|
hg init ../e
|
|
hg push -r 0 ../e ; echo $?
|
|
hg push -r 1 ../e ; echo $?
|
|
|
|
cd ..
|
|
|
|
echo % issue 736
|
|
hg init f
|
|
cd f
|
|
hg -q branch a
|
|
echo 0 > foo
|
|
hg -q ci -Am 0
|
|
echo 1 > foo
|
|
hg -q ci -m 1
|
|
hg -q up 0
|
|
echo 2 > foo
|
|
hg -q ci -m 2
|
|
hg -q up 0
|
|
hg -q branch b
|
|
echo 3 > foo
|
|
hg -q ci -m 3
|
|
cd ..
|
|
|
|
hg -q clone f g
|
|
cd g
|
|
|
|
echo % push on existing branch and new branch
|
|
hg -q up 1
|
|
echo 4 > foo
|
|
hg -q ci -m 4
|
|
hg -q up 0
|
|
echo 5 > foo
|
|
hg -q branch c
|
|
hg -q ci -m 5
|
|
hg push ../f; echo $?
|
|
hg push -r 4 -r 5 ../f; echo $?
|
|
|
|
echo % multiple new branches
|
|
hg -q branch d
|
|
echo 6 > foo
|
|
hg -q ci -m 6
|
|
hg push ../f; echo $?
|
|
hg push -r 4 -r 6 ../f; echo $?
|
|
cd ../g
|
|
|
|
echo % fail on multiple head push
|
|
hg -q up 1
|
|
echo 7 > foo
|
|
hg -q ci -m 7
|
|
hg push -r 4 -r 7 ../f; echo $?
|
|
|
|
echo % push replacement head on existing branches
|
|
hg -q up 3
|
|
echo 8 > foo
|
|
hg -q ci -m 8
|
|
hg push -r 7 -r 8 ../f; echo $?
|
|
|
|
echo % merge of branch a to other branch b followed by unrelated push on branch a
|
|
hg -q up 7
|
|
HGMERGE=true hg -q merge 8
|
|
hg -q ci -m 9
|
|
hg -q up 8
|
|
echo 10 > foo
|
|
hg -q ci -m 10
|
|
hg push -r 9 ../f; echo $?
|
|
hg push -r 10 ../f; echo $?
|
|
|
|
echo % cheating the counting algorithm
|
|
hg -q up 9
|
|
HGMERGE=true hg -q merge 2
|
|
hg -q ci -m 11
|
|
hg -q up 1
|
|
echo 12 > foo
|
|
hg -q ci -m 12
|
|
hg push -r 11 -r 12 ../f; echo $?
|
|
|
|
echo % failed push of new named branch
|
|
echo 12 > foo
|
|
hg -q ci -m 12a
|
|
hg -q up 11
|
|
echo 13 > foo
|
|
hg -q branch e
|
|
hg -q ci -m 13d
|
|
hg push -r 12 -r 13 ../f; echo $?
|
|
|
|
echo % using --new-branch to push new named branch
|
|
hg push --new-branch -r 12 -r 13 ../f; echo $?
|
|
|
|
echo % checking prepush logic does not allow silently pushing multiple new heads
|
|
cd ..
|
|
hg init h
|
|
echo init > h/init
|
|
hg -R h ci -Am init
|
|
echo a > h/a
|
|
hg -R h ci -Am a
|
|
hg clone h i
|
|
hg -R h up 0
|
|
echo b > h/b
|
|
hg -R h ci -Am b
|
|
hg -R i up 0
|
|
echo c > i/c
|
|
hg -R i ci -Am c
|
|
hg -R i push h
|
|
echo
|
|
|
|
echo % check prepush logic with merged branches
|
|
hg init j
|
|
hg -R j branch a
|
|
echo init > j/foo
|
|
hg -R j ci -Am init
|
|
hg clone j k
|
|
echo a1 > j/foo
|
|
hg -R j ci -m a1
|
|
hg -R k branch b
|
|
echo b > k/foo
|
|
hg -R k ci -m b
|
|
hg -R k up 0
|
|
hg -R k merge b
|
|
hg -R k ci -m merge
|
|
hg -R k push -r a j
|
|
echo
|
|
|
|
echo % prepush -r should not allow you to sneak in new heads
|
|
hg init l
|
|
cd l
|
|
echo a >> foo
|
|
hg -q add foo
|
|
hg -q branch a
|
|
hg -q ci -ma
|
|
hg -q up null
|
|
echo a >> foo
|
|
hg -q add foo
|
|
hg -q branch b
|
|
hg -q ci -mb
|
|
cd ..
|
|
hg -q clone l m -u a
|
|
cd m
|
|
hg -q merge b
|
|
hg -q ci -mmb
|
|
hg -q up 0
|
|
echo a >> foo
|
|
hg -q ci -ma2
|
|
hg -q up 2
|
|
echo a >> foo
|
|
hg -q branch -f b
|
|
hg -q ci -mb2
|
|
hg -q merge 3
|
|
hg -q ci -mma
|
|
hg push ../l -b b
|
|
cd ..
|
|
|
|
echo % check prepush with new branch head on former topo non-head
|
|
hg init n
|
|
cd n
|
|
hg branch A
|
|
echo a >a
|
|
hg ci -Ama
|
|
hg branch B
|
|
echo b >b
|
|
hg ci -Amb
|
|
# b is now branch head of B, and a topological head
|
|
# a is now branch head of A, but not a topological head
|
|
hg clone . inner
|
|
cd inner
|
|
hg up B
|
|
echo b1 >b1
|
|
hg ci -Amb1
|
|
# in the clone b1 is now the head of B
|
|
cd ..
|
|
hg up 0
|
|
echo a2 >a2
|
|
hg ci -Ama2
|
|
# a2 is now the new branch head of A, and a new topological head
|
|
# it replaces a former inner branch head, so it should at most warn about A, not B
|
|
echo %% glog of local
|
|
hg glog --template "{rev}: {branches} {desc}\n"
|
|
echo %% glog of remote
|
|
hg glog -R inner --template "{rev}: {branches} {desc}\n"
|
|
echo %% outgoing
|
|
hg out inner --template "{rev}: {branches} {desc}\n"
|
|
hg push inner
|
|
cd ..
|
|
|
|
echo % check prepush with new branch head on former topo head
|
|
hg init o
|
|
cd o
|
|
hg branch A
|
|
echo a >a
|
|
hg ci -Ama
|
|
hg branch B
|
|
echo b >b
|
|
hg ci -Amb
|
|
# b is now branch head of B, and a topological head
|
|
hg up 0
|
|
echo a1 >a1
|
|
hg ci -Ama1
|
|
# a1 is now branch head of A, and a topological head
|
|
hg clone . inner
|
|
cd inner
|
|
hg up B
|
|
echo b1 >b1
|
|
hg ci -Amb1
|
|
# in the clone b1 is now the head of B
|
|
cd ..
|
|
echo a2 >a2
|
|
hg ci -Ama2
|
|
# a2 is now the new branch head of A, and a topological head
|
|
# it replaces a former topological and branch head, so this should not warn
|
|
echo %% glog of local
|
|
hg glog --template "{rev}: {branches} {desc}\n"
|
|
echo %% glog of remote
|
|
hg glog -R inner --template "{rev}: {branches} {desc}\n"
|
|
echo %% outgoing
|
|
hg out inner --template "{rev}: {branches} {desc}\n"
|
|
hg push inner
|
|
cd ..
|
|
|
|
echo % check prepush with new branch head and new child of former branch head
|
|
echo % but child is on different branch
|
|
hg init p
|
|
cd p
|
|
hg branch A
|
|
echo a0 >a
|
|
hg ci -Ama0
|
|
echo a1 >a
|
|
hg ci -ma1
|
|
hg up null
|
|
hg branch B
|
|
echo b0 >b
|
|
hg ci -Amb0
|
|
echo b1 >b
|
|
hg ci -mb1
|
|
|
|
hg clone . inner
|
|
|
|
hg up A
|
|
hg branch -f B
|
|
echo a3 >a
|
|
hg ci -ma3
|
|
hg up 3
|
|
hg branch -f A
|
|
echo b3 >b
|
|
hg ci -mb3
|
|
|
|
echo %% glog of local
|
|
hg glog --template "{rev}: {branches} {desc}\n"
|
|
echo %% glog of remote
|
|
hg glog -R inner --template "{rev}: {branches} {desc}\n"
|
|
echo %% outgoing
|
|
hg out inner --template "{rev}: {branches} {desc}\n"
|
|
hg push inner
|
|
hg push inner -r4 -r5
|
|
hg in inner
|
|
cd ..
|
|
|
|
exit 0
|