Mercurial > public > mercurial-scm > hg
annotate tests/test-git-export @ 4531:b51a8138292a
Avoid extra filelogs entries.
Right now, there are some situations in which localrepo.filecommit can
create filelog entries even though they're not needed. For example:
- permissions for a file have changed;
- qrefresh can create a filelog entry identical to its parent (see the
added test);
- convert-repo creates extra filelog entries in every merge where the
first parent has added files (for example, changeset ebebe9577a1a of
the kernel repo added extra filelog entries to files in the
arch/blackfin directory, even though the merge should only touch the
drivers/ata directory). This makes "hg log file" in a converted repo
less useful than it could be, since it may mention many merges that
don't actually touch that specific file.
They all come from the same basic problem: localrepo.commit (through
filecommit) creates new filelog entries for all files passed to it
(except for some cases during a merge).
Patch and test case provided by Benoit.
This should fix issue351.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Sat, 09 Jun 2007 01:04:28 -0300 |
parents | 49237d6ae97d |
children | 826659bd8053 |
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 |