Mercurial > hg
annotate tests/test-git-export @ 4358:11dc22eb8e8d
Fix segfaults when parsing bdiff hunks in mpatch.decode() and .patchedsize()
- fix off by 11 when checking if there are more hunks (found by Maris Fogels)
- bail out if start is greater than end
- check if new hunk starts after start/end/len block of current hunk as
the pointer can wrap around on very large values, reproducible with
import mpatch; mpatch.patchedsize(12, 'x'*12)
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Sat, 27 Jan 2007 23:07:06 +0100 |
parents | 4ced663bebf0 |
children | 49237d6ae97d |
rev | line source |
---|---|
2907 | 1 #!/bin/sh |
2 | |
3 hg init a | |
4 cd a | |
5 | |
6 echo start > start | |
7 hg ci -Amstart -d '0 0' | |
8 echo new > new | |
9 hg ci -Amnew -d '0 0' | |
10 echo '% new file' | |
3199
096f1c73cdc3
Add -D/--nodates options to hg diff/export that removes dates from diff headers
Stephen Darnell <stephen@darnell.plus.com>
parents:
3066
diff
changeset
|
11 hg diff --git -r 0 |
2907 | 12 |
13 hg cp new copy | |
14 hg ci -mcopy -d '0 0' | |
15 echo '% copy' | |
3199
096f1c73cdc3
Add -D/--nodates options to hg diff/export that removes dates from diff headers
Stephen Darnell <stephen@darnell.plus.com>
parents:
3066
diff
changeset
|
16 hg diff --git -r 1:tip |
2907 | 17 |
18 hg mv copy rename | |
19 hg ci -mrename -d '0 0' | |
20 echo '% rename' | |
3199
096f1c73cdc3
Add -D/--nodates options to hg diff/export that removes dates from diff headers
Stephen Darnell <stephen@darnell.plus.com>
parents:
3066
diff
changeset
|
21 hg diff --git -r 2:tip |
2907 | 22 |
23 hg rm rename | |
24 hg ci -mdelete -d '0 0' | |
25 echo '% delete' | |
3199
096f1c73cdc3
Add -D/--nodates options to hg diff/export that removes dates from diff headers
Stephen Darnell <stephen@darnell.plus.com>
parents:
3066
diff
changeset
|
26 hg diff --git -r 3:tip |
2907 | 27 |
28 cat > src <<EOF | |
29 1 | |
30 2 | |
31 3 | |
32 4 | |
33 5 | |
34 EOF | |
35 hg ci -Amsrc -d '0 0' | |
36 chmod +x src | |
37 hg ci -munexec -d '0 0' | |
38 echo '% chmod 644' | |
3199
096f1c73cdc3
Add -D/--nodates options to hg diff/export that removes dates from diff headers
Stephen Darnell <stephen@darnell.plus.com>
parents:
3066
diff
changeset
|
39 hg diff --git -r 5:tip |
2907 | 40 |
41 hg mv src dst | |
42 chmod -x dst | |
43 echo a >> dst | |
44 hg ci -mrenamemod -d '0 0' | |
45 echo '% rename+mod+chmod' | |
3199
096f1c73cdc3
Add -D/--nodates options to hg diff/export that removes dates from diff headers
Stephen Darnell <stephen@darnell.plus.com>
parents:
3066
diff
changeset
|
46 hg diff --git -r 6:tip |
3066
035fd2029575
git --diff: fix traceback when getting mode change
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2935
diff
changeset
|
47 |
035fd2029575
git --diff: fix traceback when getting mode change
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2935
diff
changeset
|
48 echo '% nonexistent in tip+chmod' |
3199
096f1c73cdc3
Add -D/--nodates options to hg diff/export that removes dates from diff headers
Stephen Darnell <stephen@darnell.plus.com>
parents:
3066
diff
changeset
|
49 hg diff --git -r 5:6 |
3368
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
50 |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
51 echo '% binary diff' |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
52 cp $TESTDIR/binfile.bin . |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
53 hg add binfile.bin |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
54 hg diff --git > b.diff |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
55 cat b.diff |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
56 |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
57 echo '% import binary diff' |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
58 hg revert binfile.bin |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
59 rm binfile.bin |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
60 hg import -mfoo b.diff |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
61 cmp binfile.bin $TESTDIR/binfile.bin |
751df21dad72
Add test for git binary diff support
Brendan Cully <brendan@kublai.com>
parents:
3199
diff
changeset
|
62 |
3693
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
63 echo |
4092
4ced663bebf0
git patches: handle renames of binary files
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3702
diff
changeset
|
64 echo '% rename binary file' |
4ced663bebf0
git patches: handle renames of binary files
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3702
diff
changeset
|
65 hg mv binfile.bin renamed.bin |
4ced663bebf0
git patches: handle renames of binary files
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3702
diff
changeset
|
66 hg diff --git |
4ced663bebf0
git patches: handle renames of binary files
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3702
diff
changeset
|
67 |
4ced663bebf0
git patches: handle renames of binary files
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3702
diff
changeset
|
68 echo |
3693
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
69 echo '% diff across many revisions' |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
70 hg mv dst dst2 |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
71 hg ci -m 'mv dst dst2' -d '0 0' |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
72 |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
73 echo >> start |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
74 hg ci -m 'change start' -d '0 0' |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
75 |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
76 hg revert -r -2 start |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
77 hg mv dst2 dst3 |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
78 hg ci -m 'mv dst2 dst3; revert start' -d '0 0' |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
79 |
454b3a8cdf28
diff: improve detection of renames when diffing across many revisions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3368
diff
changeset
|
80 hg diff --git -r 9:11 |
3694
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
81 |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
82 echo a >> foo |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
83 hg add foo |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
84 hg ci -m 'add foo' |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
85 echo b >> foo |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
86 hg ci -m 'change foo' |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
87 hg mv foo bar |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
88 hg ci -m 'mv foo bar' |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
89 echo c >> bar |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
90 hg ci -m 'change bar' |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
91 |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
92 echo |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
93 echo '% file created before r1 and renamed before r2' |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
94 hg diff --git -r -3:-1 |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
95 echo |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
96 echo '% file created in r1 and renamed before r2' |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
97 hg diff --git -r -4:-1 |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
98 echo |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
99 echo '% file created after r1 and renamed before r2' |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
100 hg diff --git -r -5:-1 |
c0b1a0c72c7d
renamedbetween: only return (file, node) pairs that exist in the original rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3693
diff
changeset
|
101 |
3695
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
102 echo |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
103 echo '% comparing with the working dir' |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
104 echo >> start |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
105 hg ci -m 'change start again' -d '0 0' |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
106 |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
107 echo > created |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
108 hg add created |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
109 hg ci -m 'add created' |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
110 |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
111 hg mv created created2 |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
112 hg ci -m 'mv created created2' |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
113 |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
114 hg mv created2 created3 |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
115 echo "% there's a copy in the working dir..." |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
116 hg diff --git |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
117 echo |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
118 echo "% ...but there's another copy between the original rev and the wd" |
3a2fc90d27d6
fix typo in mercurial/patch.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3694
diff
changeset
|
119 hg diff --git -r -2 |
3696
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
120 echo |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
121 echo "% ...but the source of the copy was created after the original rev" |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
122 hg diff --git -r -3 |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
123 hg ci -m 'mv created2 created3' |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
124 |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
125 echo > brand-new |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
126 hg add brand-new |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
127 hg ci -m 'add brand-new' |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
128 hg mv brand-new brand-new2 |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
129 echo '% created in parent of wd; renamed in the wd' |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
130 hg diff --git |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
131 |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
132 echo |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
133 echo '% created between r1 and parent of wd; renamed in the wd' |
562a65635bcb
diff: better detection of renames when comparing with the working dir.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3695
diff
changeset
|
134 hg diff --git -r -2 |
3702
70c3ee224c08
Don't generate git patches that rename a file to multiple destinations
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3696
diff
changeset
|
135 hg ci -m 'mv brand-new brand-new2' |
70c3ee224c08
Don't generate git patches that rename a file to multiple destinations
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3696
diff
changeset
|
136 |
70c3ee224c08
Don't generate git patches that rename a file to multiple destinations
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3696
diff
changeset
|
137 echo '% one file is copied to many destinations and removed' |
70c3ee224c08
Don't generate git patches that rename a file to multiple destinations
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3696
diff
changeset
|
138 hg cp brand-new2 brand-new3 |
70c3ee224c08
Don't generate git patches that rename a file to multiple destinations
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3696
diff
changeset
|
139 hg mv brand-new2 brand-new3-2 |
70c3ee224c08
Don't generate git patches that rename a file to multiple destinations
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3696
diff
changeset
|
140 hg ci -m 'multiple renames/copies' |
70c3ee224c08
Don't generate git patches that rename a file to multiple destinations
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3696
diff
changeset
|
141 hg diff --git -r -2 -r -1 |
70c3ee224c08
Don't generate git patches that rename a file to multiple destinations
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3696
diff
changeset
|
142 |