mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 15:57:43 +03:00
6d99bd2633
With this patch, instead of generating N renames, we'll generate 1 rename and N-1 copies. Ideally the rename should come after the copies instead of before them, but that'd be harder to do.
138 lines
2.5 KiB
Bash
Executable File
138 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
hg init a
|
|
cd a
|
|
|
|
echo start > start
|
|
hg ci -Amstart -d '0 0'
|
|
echo new > new
|
|
hg ci -Amnew -d '0 0'
|
|
echo '% new file'
|
|
hg diff --git -r 0
|
|
|
|
hg cp new copy
|
|
hg ci -mcopy -d '0 0'
|
|
echo '% copy'
|
|
hg diff --git -r 1:tip
|
|
|
|
hg mv copy rename
|
|
hg ci -mrename -d '0 0'
|
|
echo '% rename'
|
|
hg diff --git -r 2:tip
|
|
|
|
hg rm rename
|
|
hg ci -mdelete -d '0 0'
|
|
echo '% delete'
|
|
hg diff --git -r 3:tip
|
|
|
|
cat > src <<EOF
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
EOF
|
|
hg ci -Amsrc -d '0 0'
|
|
chmod +x src
|
|
hg ci -munexec -d '0 0'
|
|
echo '% chmod 644'
|
|
hg diff --git -r 5:tip
|
|
|
|
hg mv src dst
|
|
chmod -x dst
|
|
echo a >> dst
|
|
hg ci -mrenamemod -d '0 0'
|
|
echo '% rename+mod+chmod'
|
|
hg diff --git -r 6:tip
|
|
|
|
echo '% nonexistent in tip+chmod'
|
|
hg diff --git -r 5:6
|
|
|
|
echo '% binary diff'
|
|
cp $TESTDIR/binfile.bin .
|
|
hg add binfile.bin
|
|
hg diff --git > b.diff
|
|
cat b.diff
|
|
|
|
echo '% import binary diff'
|
|
hg revert binfile.bin
|
|
rm binfile.bin
|
|
hg import -mfoo b.diff
|
|
cmp binfile.bin $TESTDIR/binfile.bin
|
|
|
|
echo
|
|
echo '% diff across many revisions'
|
|
hg mv dst dst2
|
|
hg ci -m 'mv dst dst2' -d '0 0'
|
|
|
|
echo >> start
|
|
hg ci -m 'change start' -d '0 0'
|
|
|
|
hg revert -r -2 start
|
|
hg mv dst2 dst3
|
|
hg ci -m 'mv dst2 dst3; revert start' -d '0 0'
|
|
|
|
hg diff --git -r 9:11
|
|
|
|
echo a >> foo
|
|
hg add foo
|
|
hg ci -m 'add foo'
|
|
echo b >> foo
|
|
hg ci -m 'change foo'
|
|
hg mv foo bar
|
|
hg ci -m 'mv foo bar'
|
|
echo c >> bar
|
|
hg ci -m 'change bar'
|
|
|
|
echo
|
|
echo '% file created before r1 and renamed before r2'
|
|
hg diff --git -r -3:-1
|
|
echo
|
|
echo '% file created in r1 and renamed before r2'
|
|
hg diff --git -r -4:-1
|
|
echo
|
|
echo '% file created after r1 and renamed before r2'
|
|
hg diff --git -r -5:-1
|
|
|
|
echo
|
|
echo '% comparing with the working dir'
|
|
echo >> start
|
|
hg ci -m 'change start again' -d '0 0'
|
|
|
|
echo > created
|
|
hg add created
|
|
hg ci -m 'add created'
|
|
|
|
hg mv created created2
|
|
hg ci -m 'mv created created2'
|
|
|
|
hg mv created2 created3
|
|
echo "% there's a copy in the working dir..."
|
|
hg diff --git
|
|
echo
|
|
echo "% ...but there's another copy between the original rev and the wd"
|
|
hg diff --git -r -2
|
|
echo
|
|
echo "% ...but the source of the copy was created after the original rev"
|
|
hg diff --git -r -3
|
|
hg ci -m 'mv created2 created3'
|
|
|
|
echo > brand-new
|
|
hg add brand-new
|
|
hg ci -m 'add brand-new'
|
|
hg mv brand-new brand-new2
|
|
echo '% created in parent of wd; renamed in the wd'
|
|
hg diff --git
|
|
|
|
echo
|
|
echo '% created between r1 and parent of wd; renamed in the wd'
|
|
hg diff --git -r -2
|
|
hg ci -m 'mv brand-new brand-new2'
|
|
|
|
echo '% one file is copied to many destinations and removed'
|
|
hg cp brand-new2 brand-new3
|
|
hg mv brand-new2 brand-new3-2
|
|
hg ci -m 'multiple renames/copies'
|
|
hg diff --git -r -2 -r -1
|
|
|