mirror of
https://github.com/facebook/sapling.git
synced 2024-10-06 14:58:03 +03:00
tests: unify test-git-*
This commit is contained in:
parent
d53524bb44
commit
0d0466ee3f
@ -1,158 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
hg init a
|
||||
cd a
|
||||
|
||||
echo start > start
|
||||
hg ci -Amstart
|
||||
echo new > new
|
||||
hg ci -Amnew
|
||||
echo '% new file'
|
||||
hg diff --git -r 0
|
||||
|
||||
hg cp new copy
|
||||
hg ci -mcopy
|
||||
echo '% copy'
|
||||
hg diff --git -r 1:tip
|
||||
|
||||
hg mv copy rename
|
||||
hg ci -mrename
|
||||
echo '% rename'
|
||||
hg diff --git -r 2:tip
|
||||
|
||||
hg rm rename
|
||||
hg ci -mdelete
|
||||
echo '% delete'
|
||||
hg diff --git -r 3:tip
|
||||
|
||||
cat > src <<EOF
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
EOF
|
||||
hg ci -Amsrc
|
||||
chmod +x src
|
||||
hg ci -munexec
|
||||
echo '% chmod 644'
|
||||
hg diff --git -r 5:tip
|
||||
|
||||
hg mv src dst
|
||||
chmod -x dst
|
||||
echo a >> dst
|
||||
hg ci -mrenamemod
|
||||
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 '% rename binary file'
|
||||
hg mv binfile.bin renamed.bin
|
||||
hg diff --git
|
||||
|
||||
echo
|
||||
echo '% diff across many revisions'
|
||||
hg mv dst dst2
|
||||
hg ci -m 'mv dst dst2'
|
||||
|
||||
echo >> start
|
||||
hg ci -m 'change start'
|
||||
|
||||
hg revert -r -2 start
|
||||
hg mv dst2 dst3
|
||||
hg ci -m 'mv dst2 dst3; revert start'
|
||||
|
||||
hg diff --git -r 9:11
|
||||
echo '% reversed'
|
||||
hg diff --git -r 11:9
|
||||
|
||||
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 '% reversed'
|
||||
hg diff --git -r -1:-3
|
||||
echo
|
||||
echo '% file created in r1 and renamed before r2'
|
||||
hg diff --git -r -4:-1
|
||||
echo '% reversed'
|
||||
hg diff --git -r -1:-4
|
||||
echo
|
||||
echo '% file created after r1 and renamed before r2'
|
||||
hg diff --git -r -5:-1
|
||||
echo '% reversed'
|
||||
hg diff --git -r -1:-5
|
||||
|
||||
echo
|
||||
echo '% comparing with the working dir'
|
||||
echo >> start
|
||||
hg ci -m 'change start again'
|
||||
|
||||
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
|
||||
echo '% reversed'
|
||||
hg diff --git -r -1 -r -2
|
||||
|
||||
echo '% there should be a trailing TAB if there are spaces in the file name'
|
||||
echo foo > 'with spaces'
|
||||
hg add 'with spaces'
|
||||
hg diff --git
|
||||
hg ci -m 'add filename with spaces'
|
||||
|
@ -1,197 +0,0 @@
|
||||
adding start
|
||||
adding new
|
||||
% new file
|
||||
diff --git a/new b/new
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/new
|
||||
@@ -0,0 +1,1 @@
|
||||
+new
|
||||
% copy
|
||||
diff --git a/new b/copy
|
||||
copy from new
|
||||
copy to copy
|
||||
% rename
|
||||
diff --git a/copy b/rename
|
||||
rename from copy
|
||||
rename to rename
|
||||
% delete
|
||||
diff --git a/rename b/rename
|
||||
deleted file mode 100644
|
||||
--- a/rename
|
||||
+++ /dev/null
|
||||
@@ -1,1 +0,0 @@
|
||||
-new
|
||||
adding src
|
||||
% chmod 644
|
||||
diff --git a/src b/src
|
||||
old mode 100644
|
||||
new mode 100755
|
||||
% rename+mod+chmod
|
||||
diff --git a/src b/dst
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
rename from src
|
||||
rename to dst
|
||||
--- a/src
|
||||
+++ b/dst
|
||||
@@ -3,3 +3,4 @@
|
||||
3
|
||||
4
|
||||
5
|
||||
+a
|
||||
% nonexistent in tip+chmod
|
||||
diff --git a/src b/src
|
||||
old mode 100644
|
||||
new mode 100755
|
||||
% binary diff
|
||||
diff --git a/binfile.bin b/binfile.bin
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..37ba3d1c6f17137d9c5f5776fa040caf5fe73ff9
|
||||
GIT binary patch
|
||||
literal 593
|
||||
zc$@)I0<QguP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000XU
|
||||
z000XU0RWnu7ytkO2XskIMF-Uh9TW;VpMjwv0005-Nkl<ZD9@FWPs=e;7{<>W$NUkd
|
||||
zX$nnYLt$-$V!?uy+1V%`z&Eh=ah|duER<4|QWhju3gb^nF*8iYobxWG-qqXl=2~5M
|
||||
z*IoDB)sG^CfNuoBmqLTVU^<;@nwHP!1wrWd`{(mHo6VNXWtyh{alzqmsH*yYzpvLT
|
||||
zLdY<T=ks|woh-`&01!ej#(xbV1f|pI*=%;d-%F*E*X#ZH`4I%6SS+$EJDE&ct=8po
|
||||
ziN#{?_j|kD%Cd|oiqds`xm@;oJ-^?NG3Gdqrs?5u*zI;{nogxsx~^|Fn^Y?Gdc6<;
|
||||
zfMJ+iF1J`LMx&A2?dEwNW8ClebzPTbIh{@$hS6*`kH@1d%Lo7fA#}N1)oN7`gm$~V
|
||||
z+wDx#)OFqMcE{s!JN0-xhG8ItAjVkJwEcb`3WWlJfU2r?;Pd%dmR+q@mSri5q9_W-
|
||||
zaR2~ECX?B2w+zELozC0s*6Z~|QG^f{3I#<`?)Q7U-JZ|q5W;9Q8i_=pBuSzunx=U;
|
||||
z9C)5jBoYw9^?EHyQl(M}1OlQcCX>lXB*ODN003Z&P17_@)3Pi=i0wb04<W?v-u}7K
|
||||
zXmmQA+wDgE!qR9o8jr`%=ab_&uh(l?R=r;Tjiqon91I2-hIu?57~@*4h7h9uORK#=
|
||||
fQItJW-{SoTm)8|5##k|m00000NkvXXu0mjf{mKw4
|
||||
|
||||
% import binary diff
|
||||
applying b.diff
|
||||
|
||||
% rename binary file
|
||||
diff --git a/binfile.bin b/renamed.bin
|
||||
rename from binfile.bin
|
||||
rename to renamed.bin
|
||||
|
||||
% diff across many revisions
|
||||
diff --git a/dst2 b/dst3
|
||||
rename from dst2
|
||||
rename to dst3
|
||||
% reversed
|
||||
diff --git a/dst3 b/dst2
|
||||
rename from dst3
|
||||
rename to dst2
|
||||
|
||||
% file created before r1 and renamed before r2
|
||||
diff --git a/foo b/bar
|
||||
rename from foo
|
||||
rename to bar
|
||||
--- a/foo
|
||||
+++ b/bar
|
||||
@@ -1,2 +1,3 @@
|
||||
a
|
||||
b
|
||||
+c
|
||||
% reversed
|
||||
diff --git a/bar b/foo
|
||||
rename from bar
|
||||
rename to foo
|
||||
--- a/bar
|
||||
+++ b/foo
|
||||
@@ -1,3 +1,2 @@
|
||||
a
|
||||
b
|
||||
-c
|
||||
|
||||
% file created in r1 and renamed before r2
|
||||
diff --git a/foo b/bar
|
||||
rename from foo
|
||||
rename to bar
|
||||
--- a/foo
|
||||
+++ b/bar
|
||||
@@ -1,1 +1,3 @@
|
||||
a
|
||||
+b
|
||||
+c
|
||||
% reversed
|
||||
diff --git a/bar b/foo
|
||||
rename from bar
|
||||
rename to foo
|
||||
--- a/bar
|
||||
+++ b/foo
|
||||
@@ -1,3 +1,1 @@
|
||||
a
|
||||
-b
|
||||
-c
|
||||
|
||||
% file created after r1 and renamed before r2
|
||||
diff --git a/bar b/bar
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/bar
|
||||
@@ -0,0 +1,3 @@
|
||||
+a
|
||||
+b
|
||||
+c
|
||||
% reversed
|
||||
diff --git a/bar b/bar
|
||||
deleted file mode 100644
|
||||
--- a/bar
|
||||
+++ /dev/null
|
||||
@@ -1,3 +0,0 @@
|
||||
-a
|
||||
-b
|
||||
-c
|
||||
|
||||
% comparing with the working dir
|
||||
% there's a copy in the working dir...
|
||||
diff --git a/created2 b/created3
|
||||
rename from created2
|
||||
rename to created3
|
||||
|
||||
% ...but there's another copy between the original rev and the wd
|
||||
diff --git a/created b/created3
|
||||
rename from created
|
||||
rename to created3
|
||||
|
||||
% ...but the source of the copy was created after the original rev
|
||||
diff --git a/created3 b/created3
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/created3
|
||||
@@ -0,0 +1,1 @@
|
||||
+
|
||||
% created in parent of wd; renamed in the wd
|
||||
diff --git a/brand-new b/brand-new2
|
||||
rename from brand-new
|
||||
rename to brand-new2
|
||||
|
||||
% created between r1 and parent of wd; renamed in the wd
|
||||
diff --git a/brand-new2 b/brand-new2
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/brand-new2
|
||||
@@ -0,0 +1,1 @@
|
||||
+
|
||||
% one file is copied to many destinations and removed
|
||||
diff --git a/brand-new2 b/brand-new3
|
||||
rename from brand-new2
|
||||
rename to brand-new3
|
||||
diff --git a/brand-new2 b/brand-new3-2
|
||||
copy from brand-new2
|
||||
copy to brand-new3-2
|
||||
% reversed
|
||||
diff --git a/brand-new3 b/brand-new2
|
||||
rename from brand-new3
|
||||
rename to brand-new2
|
||||
diff --git a/brand-new3-2 b/brand-new3-2
|
||||
deleted file mode 100644
|
||||
--- a/brand-new3-2
|
||||
+++ /dev/null
|
||||
@@ -1,1 +0,0 @@
|
||||
-
|
||||
% there should be a trailing TAB if there are spaces in the file name
|
||||
diff --git a/with spaces b/with spaces
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/with spaces
|
||||
@@ -0,0 +1,1 @@
|
||||
+foo
|
349
tests/test-git-export.t
Normal file
349
tests/test-git-export.t
Normal file
@ -0,0 +1,349 @@
|
||||
$ hg init
|
||||
$ echo start > start
|
||||
$ hg ci -Amstart
|
||||
adding start
|
||||
|
||||
New file:
|
||||
|
||||
$ echo new > new
|
||||
$ hg ci -Amnew
|
||||
adding new
|
||||
$ hg diff --git -r 0
|
||||
diff --git a/new b/new
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/new
|
||||
@@ -0,0 +1,1 @@
|
||||
+new
|
||||
|
||||
Copy:
|
||||
|
||||
$ hg cp new copy
|
||||
$ hg ci -mcopy
|
||||
$ hg diff --git -r 1:tip
|
||||
diff --git a/new b/copy
|
||||
copy from new
|
||||
copy to copy
|
||||
|
||||
Rename:
|
||||
|
||||
$ hg mv copy rename
|
||||
$ hg ci -mrename
|
||||
$ hg diff --git -r 2:tip
|
||||
diff --git a/copy b/rename
|
||||
rename from copy
|
||||
rename to rename
|
||||
|
||||
Delete:
|
||||
|
||||
$ hg rm rename
|
||||
$ hg ci -mdelete
|
||||
$ hg diff --git -r 3:tip
|
||||
diff --git a/rename b/rename
|
||||
deleted file mode 100644
|
||||
--- a/rename
|
||||
+++ /dev/null
|
||||
@@ -1,1 +0,0 @@
|
||||
-new
|
||||
|
||||
$ cat > src <<EOF
|
||||
> 1
|
||||
> 2
|
||||
> 3
|
||||
> 4
|
||||
> 5
|
||||
> EOF
|
||||
$ hg ci -Amsrc
|
||||
adding src
|
||||
|
||||
chmod 644:
|
||||
|
||||
$ chmod +x src
|
||||
$ hg ci -munexec
|
||||
$ hg diff --git -r 5:tip
|
||||
diff --git a/src b/src
|
||||
old mode 100644
|
||||
new mode 100755
|
||||
|
||||
Rename+mod+chmod:
|
||||
|
||||
$ hg mv src dst
|
||||
$ chmod -x dst
|
||||
$ echo a >> dst
|
||||
$ hg ci -mrenamemod
|
||||
$ hg diff --git -r 6:tip
|
||||
diff --git a/src b/dst
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
rename from src
|
||||
rename to dst
|
||||
--- a/src
|
||||
+++ b/dst
|
||||
@@ -3,3 +3,4 @@
|
||||
3
|
||||
4
|
||||
5
|
||||
+a
|
||||
|
||||
Nonexistent in tip+chmod:
|
||||
|
||||
$ hg diff --git -r 5:6
|
||||
diff --git a/src b/src
|
||||
old mode 100644
|
||||
new mode 100755
|
||||
|
||||
Binary diff:
|
||||
|
||||
$ cp $TESTDIR/binfile.bin .
|
||||
$ hg add binfile.bin
|
||||
$ hg diff --git > b.diff
|
||||
$ cat b.diff
|
||||
diff --git a/binfile.bin b/binfile.bin
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..37ba3d1c6f17137d9c5f5776fa040caf5fe73ff9
|
||||
GIT binary patch
|
||||
literal 593
|
||||
zc$@)I0<QguP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000XU
|
||||
z000XU0RWnu7ytkO2XskIMF-Uh9TW;VpMjwv0005-Nkl<ZD9@FWPs=e;7{<>W$NUkd
|
||||
zX$nnYLt$-$V!?uy+1V%`z&Eh=ah|duER<4|QWhju3gb^nF*8iYobxWG-qqXl=2~5M
|
||||
z*IoDB)sG^CfNuoBmqLTVU^<;@nwHP!1wrWd`{(mHo6VNXWtyh{alzqmsH*yYzpvLT
|
||||
zLdY<T=ks|woh-`&01!ej#(xbV1f|pI*=%;d-%F*E*X#ZH`4I%6SS+$EJDE&ct=8po
|
||||
ziN#{?_j|kD%Cd|oiqds`xm@;oJ-^?NG3Gdqrs?5u*zI;{nogxsx~^|Fn^Y?Gdc6<;
|
||||
zfMJ+iF1J`LMx&A2?dEwNW8ClebzPTbIh{@$hS6*`kH@1d%Lo7fA#}N1)oN7`gm$~V
|
||||
z+wDx#)OFqMcE{s!JN0-xhG8ItAjVkJwEcb`3WWlJfU2r?;Pd%dmR+q@mSri5q9_W-
|
||||
zaR2~ECX?B2w+zELozC0s*6Z~|QG^f{3I#<`?)Q7U-JZ|q5W;9Q8i_=pBuSzunx=U;
|
||||
z9C)5jBoYw9^?EHyQl(M}1OlQcCX>lXB*ODN003Z&P17_@)3Pi=i0wb04<W?v-u}7K
|
||||
zXmmQA+wDgE!qR9o8jr`%=ab_&uh(l?R=r;Tjiqon91I2-hIu?57~@*4h7h9uORK#=
|
||||
fQItJW-{SoTm)8|5##k|m00000NkvXXu0mjf{mKw4
|
||||
|
||||
|
||||
Import binary diff:
|
||||
|
||||
$ hg revert binfile.bin
|
||||
$ rm binfile.bin
|
||||
$ hg import -mfoo b.diff
|
||||
applying b.diff
|
||||
$ cmp binfile.bin $TESTDIR/binfile.bin
|
||||
|
||||
Rename binary file:
|
||||
|
||||
$ hg mv binfile.bin renamed.bin
|
||||
$ hg diff --git
|
||||
diff --git a/binfile.bin b/renamed.bin
|
||||
rename from binfile.bin
|
||||
rename to renamed.bin
|
||||
|
||||
Diff across many revisions:
|
||||
|
||||
$ hg mv dst dst2
|
||||
$ hg ci -m 'mv dst dst2'
|
||||
|
||||
$ echo >> start
|
||||
$ hg ci -m 'change start'
|
||||
|
||||
$ hg revert -r -2 start
|
||||
$ hg mv dst2 dst3
|
||||
$ hg ci -m 'mv dst2 dst3; revert start'
|
||||
|
||||
$ hg diff --git -r 9:11
|
||||
diff --git a/dst2 b/dst3
|
||||
rename from dst2
|
||||
rename to dst3
|
||||
|
||||
Reversed:
|
||||
|
||||
$ hg diff --git -r 11:9
|
||||
diff --git a/dst3 b/dst2
|
||||
rename from dst3
|
||||
rename to dst2
|
||||
|
||||
|
||||
$ 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'
|
||||
|
||||
File created before r1 and renamed before r2:
|
||||
|
||||
$ hg diff --git -r -3:-1
|
||||
diff --git a/foo b/bar
|
||||
rename from foo
|
||||
rename to bar
|
||||
--- a/foo
|
||||
+++ b/bar
|
||||
@@ -1,2 +1,3 @@
|
||||
a
|
||||
b
|
||||
+c
|
||||
|
||||
Reversed:
|
||||
|
||||
$ hg diff --git -r -1:-3
|
||||
diff --git a/bar b/foo
|
||||
rename from bar
|
||||
rename to foo
|
||||
--- a/bar
|
||||
+++ b/foo
|
||||
@@ -1,3 +1,2 @@
|
||||
a
|
||||
b
|
||||
-c
|
||||
|
||||
File created in r1 and renamed before r2:
|
||||
|
||||
$ hg diff --git -r -4:-1
|
||||
diff --git a/foo b/bar
|
||||
rename from foo
|
||||
rename to bar
|
||||
--- a/foo
|
||||
+++ b/bar
|
||||
@@ -1,1 +1,3 @@
|
||||
a
|
||||
+b
|
||||
+c
|
||||
|
||||
Reversed:
|
||||
|
||||
$ hg diff --git -r -1:-4
|
||||
diff --git a/bar b/foo
|
||||
rename from bar
|
||||
rename to foo
|
||||
--- a/bar
|
||||
+++ b/foo
|
||||
@@ -1,3 +1,1 @@
|
||||
a
|
||||
-b
|
||||
-c
|
||||
|
||||
File created after r1 and renamed before r2:
|
||||
|
||||
$ hg diff --git -r -5:-1
|
||||
diff --git a/bar b/bar
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/bar
|
||||
@@ -0,0 +1,3 @@
|
||||
+a
|
||||
+b
|
||||
+c
|
||||
|
||||
Reversed:
|
||||
|
||||
$ hg diff --git -r -1:-5
|
||||
diff --git a/bar b/bar
|
||||
deleted file mode 100644
|
||||
--- a/bar
|
||||
+++ /dev/null
|
||||
@@ -1,3 +0,0 @@
|
||||
-a
|
||||
-b
|
||||
-c
|
||||
|
||||
|
||||
Comparing with the working dir:
|
||||
|
||||
$ echo >> start
|
||||
$ hg ci -m 'change start again'
|
||||
|
||||
$ echo > created
|
||||
$ hg add created
|
||||
$ hg ci -m 'add created'
|
||||
|
||||
$ hg mv created created2
|
||||
$ hg ci -m 'mv created created2'
|
||||
|
||||
$ hg mv created2 created3
|
||||
|
||||
There's a copy in the working dir:
|
||||
|
||||
$ hg diff --git
|
||||
diff --git a/created2 b/created3
|
||||
rename from created2
|
||||
rename to created3
|
||||
|
||||
There's another copy between the original rev and the wd:
|
||||
|
||||
$ hg diff --git -r -2
|
||||
diff --git a/created b/created3
|
||||
rename from created
|
||||
rename to created3
|
||||
|
||||
The source of the copy was created after the original rev:
|
||||
|
||||
$ hg diff --git -r -3
|
||||
diff --git a/created3 b/created3
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/created3
|
||||
@@ -0,0 +1,1 @@
|
||||
+
|
||||
$ 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
|
||||
|
||||
Created in parent of wd; renamed in the wd:
|
||||
|
||||
$ hg diff --git
|
||||
diff --git a/brand-new b/brand-new2
|
||||
rename from brand-new
|
||||
rename to brand-new2
|
||||
|
||||
Created between r1 and parent of wd; renamed in the wd:
|
||||
|
||||
$ hg diff --git -r -2
|
||||
diff --git a/brand-new2 b/brand-new2
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/brand-new2
|
||||
@@ -0,0 +1,1 @@
|
||||
+
|
||||
$ hg ci -m 'mv brand-new brand-new2'
|
||||
|
||||
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
|
||||
diff --git a/brand-new2 b/brand-new3
|
||||
rename from brand-new2
|
||||
rename to brand-new3
|
||||
diff --git a/brand-new2 b/brand-new3-2
|
||||
copy from brand-new2
|
||||
copy to brand-new3-2
|
||||
|
||||
Reversed:
|
||||
|
||||
$ hg diff --git -r -1 -r -2
|
||||
diff --git a/brand-new3 b/brand-new2
|
||||
rename from brand-new3
|
||||
rename to brand-new2
|
||||
diff --git a/brand-new3-2 b/brand-new3-2
|
||||
deleted file mode 100644
|
||||
--- a/brand-new3-2
|
||||
+++ /dev/null
|
||||
@@ -1,1 +0,0 @@
|
||||
-
|
||||
|
||||
There should be a trailing TAB if there are spaces in the file name:
|
||||
|
||||
$ echo foo > 'with spaces'
|
||||
$ hg add 'with spaces'
|
||||
$ hg diff --git
|
||||
diff --git a/with spaces b/with spaces
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/with spaces
|
||||
@@ -0,0 +1,1 @@
|
||||
+foo
|
||||
$ hg ci -m 'add filename with spaces'
|
||||
|
@ -1,230 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
hg init a
|
||||
cd a
|
||||
|
||||
echo % new file
|
||||
hg import -d "1000000 0" -mnew - <<EOF
|
||||
diff --git a/new b/new
|
||||
new file mode 100644
|
||||
index 0000000..7898192
|
||||
--- /dev/null
|
||||
+++ b/new
|
||||
@@ -0,0 +1 @@
|
||||
+a
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
echo % new empty file
|
||||
hg import -d "1000000 0" -mempty - <<EOF
|
||||
diff --git a/empty b/empty
|
||||
new file mode 100644
|
||||
EOF
|
||||
hg tip -q
|
||||
hg locate empty
|
||||
|
||||
echo % chmod +x
|
||||
hg import -d "1000000 0" -msetx - <<EOF
|
||||
diff --git a/new b/new
|
||||
old mode 100644
|
||||
new mode 100755
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
test -x new || echo failed
|
||||
|
||||
echo % copy
|
||||
hg import -d "1000000 0" -mcopy - <<EOF
|
||||
diff --git a/new b/copy
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
similarity index 100%
|
||||
copy from new
|
||||
copy to copy
|
||||
diff --git a/new b/copyx
|
||||
similarity index 100%
|
||||
copy from new
|
||||
copy to copyx
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
if "$TESTDIR/hghave" -q execbit; then
|
||||
test -f copy -a ! -x copy || echo failed
|
||||
test -x copyx || echo failed
|
||||
else
|
||||
test -f copy || echo failed
|
||||
fi
|
||||
cat copy
|
||||
hg cat copy
|
||||
|
||||
echo % rename
|
||||
hg import -d "1000000 0" -mrename - <<EOF
|
||||
diff --git a/copy b/rename
|
||||
similarity index 100%
|
||||
rename from copy
|
||||
rename to rename
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
hg locate
|
||||
|
||||
echo % delete
|
||||
hg import -d "1000000 0" -mdelete - <<EOF
|
||||
diff --git a/copyx b/copyx
|
||||
deleted file mode 100755
|
||||
index 7898192..0000000
|
||||
--- a/copyx
|
||||
+++ /dev/null
|
||||
@@ -1 +0,0 @@
|
||||
-a
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
hg locate
|
||||
test -f copyx && echo failed || true
|
||||
|
||||
echo % regular diff
|
||||
hg import -d "1000000 0" -mregular - <<EOF
|
||||
diff --git a/rename b/rename
|
||||
index 7898192..72e1fe3 100644
|
||||
--- a/rename
|
||||
+++ b/rename
|
||||
@@ -1 +1,5 @@
|
||||
a
|
||||
+a
|
||||
+a
|
||||
+a
|
||||
+a
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
echo % copy and modify
|
||||
hg import -d "1000000 0" -mcopymod - <<EOF
|
||||
diff --git a/rename b/copy2
|
||||
similarity index 80%
|
||||
copy from rename
|
||||
copy to copy2
|
||||
index 72e1fe3..b53c148 100644
|
||||
--- a/rename
|
||||
+++ b/copy2
|
||||
@@ -1,5 +1,5 @@
|
||||
a
|
||||
a
|
||||
-a
|
||||
+b
|
||||
a
|
||||
a
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
hg cat copy2
|
||||
|
||||
echo % rename and modify
|
||||
hg import -d "1000000 0" -mrenamemod - <<EOF
|
||||
diff --git a/copy2 b/rename2
|
||||
similarity index 80%
|
||||
rename from copy2
|
||||
rename to rename2
|
||||
index b53c148..8f81e29 100644
|
||||
--- a/copy2
|
||||
+++ b/rename2
|
||||
@@ -1,5 +1,5 @@
|
||||
a
|
||||
a
|
||||
b
|
||||
-a
|
||||
+c
|
||||
a
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
hg locate copy2
|
||||
hg cat rename2
|
||||
|
||||
echo % one file renamed multiple times
|
||||
hg import -d "1000000 0" -mmultirenames - <<EOF
|
||||
diff --git a/rename2 b/rename3
|
||||
rename from rename2
|
||||
rename to rename3
|
||||
diff --git a/rename2 b/rename3-2
|
||||
rename from rename2
|
||||
rename to rename3-2
|
||||
EOF
|
||||
hg tip -q
|
||||
hg log -vr. --template '{rev} {files} / {file_copies}\n'
|
||||
|
||||
hg locate rename2 rename3 rename3-2
|
||||
hg cat rename3
|
||||
echo
|
||||
hg cat rename3-2
|
||||
|
||||
echo foo > foo
|
||||
hg add foo
|
||||
hg ci -m 'add foo'
|
||||
echo % binary files and regular patch hunks
|
||||
hg import -d "1000000 0" -m binaryregular - <<EOF
|
||||
diff --git a/binary b/binary
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
|
||||
GIT binary patch
|
||||
literal 4
|
||||
Lc\${NkU|;|M00aO5
|
||||
|
||||
diff --git a/foo b/foo2
|
||||
rename from foo
|
||||
rename to foo2
|
||||
EOF
|
||||
hg tip -q
|
||||
cat foo2
|
||||
hg manifest --debug | grep binary
|
||||
|
||||
echo % many binary files
|
||||
hg import -d "1000000 0" -m multibinary - <<EOF
|
||||
diff --git a/mbinary1 b/mbinary1
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
|
||||
GIT binary patch
|
||||
literal 4
|
||||
Lc\${NkU|;|M00aO5
|
||||
|
||||
diff --git a/mbinary2 b/mbinary2
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..112363ac1917b417ffbd7f376ca786a1e5fa7490
|
||||
GIT binary patch
|
||||
literal 5
|
||||
Mc\${NkU|\`?^000jF3jhEB
|
||||
|
||||
EOF
|
||||
hg tip -q
|
||||
hg manifest --debug | grep mbinary
|
||||
|
||||
echo % filenames with spaces
|
||||
hg import -d "1000000 0" -m spaces - <<EOF
|
||||
diff --git a/foo bar b/foo bar
|
||||
new file mode 100644
|
||||
index 0000000..257cc56
|
||||
--- /dev/null
|
||||
+++ b/foo bar
|
||||
@@ -0,0 +1 @@
|
||||
+foo
|
||||
EOF
|
||||
hg tip -q
|
||||
cat "foo bar"
|
||||
|
||||
echo % copy then modify the original file
|
||||
hg import -d "1000000 0" -m copy-mod-orig - <<EOF
|
||||
diff --git a/foo2 b/foo2
|
||||
index 257cc56..fe08ec6 100644
|
||||
--- a/foo2
|
||||
+++ b/foo2
|
||||
@@ -1 +1,2 @@
|
||||
foo
|
||||
+new line
|
||||
diff --git a/foo2 b/foo3
|
||||
similarity index 100%
|
||||
copy from foo2
|
||||
copy to foo3
|
||||
EOF
|
||||
hg tip -q
|
||||
|
||||
cat foo3
|
@ -1,82 +0,0 @@
|
||||
% new file
|
||||
applying patch from stdin
|
||||
0:ae3ee40d2079
|
||||
% new empty file
|
||||
applying patch from stdin
|
||||
1:ab199dc869b5
|
||||
empty
|
||||
% chmod +x
|
||||
applying patch from stdin
|
||||
2:3a34410f282e
|
||||
% copy
|
||||
applying patch from stdin
|
||||
3:37bacb7ca14d
|
||||
a
|
||||
a
|
||||
% rename
|
||||
applying patch from stdin
|
||||
4:47b81a94361d
|
||||
copyx
|
||||
empty
|
||||
new
|
||||
rename
|
||||
% delete
|
||||
applying patch from stdin
|
||||
5:d9b001d98336
|
||||
empty
|
||||
new
|
||||
rename
|
||||
% regular diff
|
||||
applying patch from stdin
|
||||
6:ebe901e7576b
|
||||
% copy and modify
|
||||
applying patch from stdin
|
||||
7:18f368958ecd
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
% rename and modify
|
||||
applying patch from stdin
|
||||
8:c32b0d7e6f44
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
a
|
||||
% one file renamed multiple times
|
||||
applying patch from stdin
|
||||
9:034a6bf95330
|
||||
9 rename2 rename3 rename3-2 / rename3 (rename2)rename3-2 (rename2)
|
||||
rename3
|
||||
rename3-2
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
a
|
||||
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
a
|
||||
% binary files and regular patch hunks
|
||||
applying patch from stdin
|
||||
11:c39bce63e786
|
||||
foo
|
||||
045c85ba38952325e126c70962cc0f9d9077bc67 644 binary
|
||||
% many binary files
|
||||
applying patch from stdin
|
||||
12:30b530085242
|
||||
045c85ba38952325e126c70962cc0f9d9077bc67 644 mbinary1
|
||||
a874b471193996e7cb034bb301cac7bdaf3e3f46 644 mbinary2
|
||||
% filenames with spaces
|
||||
applying patch from stdin
|
||||
13:04750ef42fb3
|
||||
foo
|
||||
% copy then modify the original file
|
||||
applying patch from stdin
|
||||
14:c4cd9cdeaa74
|
||||
foo
|
335
tests/test-git-import.t
Normal file
335
tests/test-git-import.t
Normal file
@ -0,0 +1,335 @@
|
||||
|
||||
$ hg init
|
||||
|
||||
New file:
|
||||
|
||||
$ hg import -d "1000000 0" -mnew - <<EOF
|
||||
> diff --git a/new b/new
|
||||
> new file mode 100644
|
||||
> index 0000000..7898192
|
||||
> --- /dev/null
|
||||
> +++ b/new
|
||||
> @@ -0,0 +1 @@
|
||||
> +a
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
0:ae3ee40d2079
|
||||
|
||||
New empty file:
|
||||
|
||||
$ hg import -d "1000000 0" -mempty - <<EOF
|
||||
> diff --git a/empty b/empty
|
||||
> new file mode 100644
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
1:ab199dc869b5
|
||||
|
||||
$ hg locate empty
|
||||
empty
|
||||
|
||||
chmod +x:
|
||||
|
||||
$ hg import -d "1000000 0" -msetx - <<EOF
|
||||
> diff --git a/new b/new
|
||||
> old mode 100644
|
||||
> new mode 100755
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
2:3a34410f282e
|
||||
|
||||
$ test -x new || echo failed
|
||||
|
||||
Copy:
|
||||
|
||||
$ hg import -d "1000000 0" -mcopy - <<EOF
|
||||
> diff --git a/new b/copy
|
||||
> old mode 100755
|
||||
> new mode 100644
|
||||
> similarity index 100%
|
||||
> copy from new
|
||||
> copy to copy
|
||||
> diff --git a/new b/copyx
|
||||
> similarity index 100%
|
||||
> copy from new
|
||||
> copy to copyx
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
3:37bacb7ca14d
|
||||
|
||||
$ if "$TESTDIR/hghave" -q execbit; then
|
||||
> test -f copy -a ! -x copy || echo failed
|
||||
> test -x copyx || echo failed
|
||||
> else
|
||||
> test -f copy || echo failed
|
||||
> fi
|
||||
|
||||
$ cat copy
|
||||
a
|
||||
|
||||
$ hg cat copy
|
||||
a
|
||||
|
||||
Rename:
|
||||
|
||||
$ hg import -d "1000000 0" -mrename - <<EOF
|
||||
> diff --git a/copy b/rename
|
||||
> similarity index 100%
|
||||
> rename from copy
|
||||
> rename to rename
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
4:47b81a94361d
|
||||
|
||||
$ hg locate
|
||||
copyx
|
||||
empty
|
||||
new
|
||||
rename
|
||||
|
||||
Delete:
|
||||
|
||||
$ hg import -d "1000000 0" -mdelete - <<EOF
|
||||
> diff --git a/copyx b/copyx
|
||||
> deleted file mode 100755
|
||||
> index 7898192..0000000
|
||||
> --- a/copyx
|
||||
> +++ /dev/null
|
||||
> @@ -1 +0,0 @@
|
||||
> -a
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
5:d9b001d98336
|
||||
|
||||
$ hg locate
|
||||
empty
|
||||
new
|
||||
rename
|
||||
|
||||
$ test -f copyx && echo failed || true
|
||||
|
||||
Regular diff:
|
||||
|
||||
$ hg import -d "1000000 0" -mregular - <<EOF
|
||||
> diff --git a/rename b/rename
|
||||
> index 7898192..72e1fe3 100644
|
||||
> --- a/rename
|
||||
> +++ b/rename
|
||||
> @@ -1 +1,5 @@
|
||||
> a
|
||||
> +a
|
||||
> +a
|
||||
> +a
|
||||
> +a
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
6:ebe901e7576b
|
||||
|
||||
Copy and modify:
|
||||
|
||||
$ hg import -d "1000000 0" -mcopymod - <<EOF
|
||||
> diff --git a/rename b/copy2
|
||||
> similarity index 80%
|
||||
> copy from rename
|
||||
> copy to copy2
|
||||
> index 72e1fe3..b53c148 100644
|
||||
> --- a/rename
|
||||
> +++ b/copy2
|
||||
> @@ -1,5 +1,5 @@
|
||||
> a
|
||||
> a
|
||||
> -a
|
||||
> +b
|
||||
> a
|
||||
> a
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
7:18f368958ecd
|
||||
|
||||
$ hg cat copy2
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
|
||||
Rename and modify:
|
||||
|
||||
$ hg import -d "1000000 0" -mrenamemod - <<EOF
|
||||
> diff --git a/copy2 b/rename2
|
||||
> similarity index 80%
|
||||
> rename from copy2
|
||||
> rename to rename2
|
||||
> index b53c148..8f81e29 100644
|
||||
> --- a/copy2
|
||||
> +++ b/rename2
|
||||
> @@ -1,5 +1,5 @@
|
||||
> a
|
||||
> a
|
||||
> b
|
||||
> -a
|
||||
> +c
|
||||
> a
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
8:c32b0d7e6f44
|
||||
|
||||
$ hg locate copy2
|
||||
$ hg cat rename2
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
a
|
||||
|
||||
One file renamed multiple times:
|
||||
|
||||
$ hg import -d "1000000 0" -mmultirenames - <<EOF
|
||||
> diff --git a/rename2 b/rename3
|
||||
> rename from rename2
|
||||
> rename to rename3
|
||||
> diff --git a/rename2 b/rename3-2
|
||||
> rename from rename2
|
||||
> rename to rename3-2
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
9:034a6bf95330
|
||||
|
||||
$ hg log -vr. --template '{rev} {files} / {file_copies}\n'
|
||||
9 rename2 rename3 rename3-2 / rename3 (rename2)rename3-2 (rename2)
|
||||
|
||||
$ hg locate rename2 rename3 rename3-2
|
||||
rename3
|
||||
rename3-2
|
||||
|
||||
$ hg cat rename3
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
a
|
||||
|
||||
$ hg cat rename3-2
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
a
|
||||
|
||||
$ echo foo > foo
|
||||
$ hg add foo
|
||||
$ hg ci -m 'add foo'
|
||||
|
||||
Binary files and regular patch hunks:
|
||||
|
||||
$ hg import -d "1000000 0" -m binaryregular - <<EOF
|
||||
> diff --git a/binary b/binary
|
||||
> new file mode 100644
|
||||
> index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
|
||||
> GIT binary patch
|
||||
> literal 4
|
||||
> Lc\${NkU|;|M00aO5
|
||||
>
|
||||
> diff --git a/foo b/foo2
|
||||
> rename from foo
|
||||
> rename to foo2
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
11:c39bce63e786
|
||||
|
||||
$ cat foo2
|
||||
foo
|
||||
|
||||
$ hg manifest --debug | grep binary
|
||||
045c85ba38952325e126c70962cc0f9d9077bc67 644 binary
|
||||
|
||||
Multiple binary files:
|
||||
|
||||
$ hg import -d "1000000 0" -m multibinary - <<EOF
|
||||
> diff --git a/mbinary1 b/mbinary1
|
||||
> new file mode 100644
|
||||
> index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
|
||||
> GIT binary patch
|
||||
> literal 4
|
||||
> Lc\${NkU|;|M00aO5
|
||||
>
|
||||
> diff --git a/mbinary2 b/mbinary2
|
||||
> new file mode 100644
|
||||
> index 0000000000000000000000000000000000000000..112363ac1917b417ffbd7f376ca786a1e5fa7490
|
||||
> GIT binary patch
|
||||
> literal 5
|
||||
> Mc\${NkU|\`?^000jF3jhEB
|
||||
>
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
12:30b530085242
|
||||
|
||||
$ hg manifest --debug | grep mbinary
|
||||
045c85ba38952325e126c70962cc0f9d9077bc67 644 mbinary1
|
||||
a874b471193996e7cb034bb301cac7bdaf3e3f46 644 mbinary2
|
||||
|
||||
Filenames with spaces:
|
||||
|
||||
$ hg import -d "1000000 0" -m spaces - <<EOF
|
||||
> diff --git a/foo bar b/foo bar
|
||||
> new file mode 100644
|
||||
> index 0000000..257cc56
|
||||
> --- /dev/null
|
||||
> +++ b/foo bar
|
||||
> @@ -0,0 +1 @@
|
||||
> +foo
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
13:04750ef42fb3
|
||||
|
||||
$ cat "foo bar"
|
||||
foo
|
||||
|
||||
Copy then modify the original file:
|
||||
|
||||
$ hg import -d "1000000 0" -m copy-mod-orig - <<EOF
|
||||
> diff --git a/foo2 b/foo2
|
||||
> index 257cc56..fe08ec6 100644
|
||||
> --- a/foo2
|
||||
> +++ b/foo2
|
||||
> @@ -1 +1,2 @@
|
||||
> foo
|
||||
> +new line
|
||||
> diff --git a/foo2 b/foo3
|
||||
> similarity index 100%
|
||||
> copy from foo2
|
||||
> copy to foo3
|
||||
> EOF
|
||||
applying patch from stdin
|
||||
|
||||
$ hg tip -q
|
||||
14:c4cd9cdeaa74
|
||||
|
||||
$ cat foo3
|
||||
foo
|
||||
|
Loading…
Reference in New Issue
Block a user