tests/test-git-export.t
changeset 12193 927e1a677267
parent 8167 6c82beaaa11a
child 15442 db0340f4b507
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-git-export.t	Fri Sep 03 14:29:28 2010 +0200
@@ -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'
+