Mercurial > hg > mercurial-crew-with-dirclash
annotate tests/test-clone-failure @ 5378:8a2915f57dfc
convert: add a mode where mercurial_sink skips empty revisions.
The getchanges function of some converter_source classes can return
some false positives. I.e. they sometimes claim that a file "foo"
was changed in some revision, even though its contents are still the
same.
convert_svn is particularly bad, but I think this can also happen with
convert_cvs and, at least in theory, with mercurial_source.
For regular conversions this is not really a problem - as long as
getfile returns the right contents, we'll get a converted revision
with the right contents. But when we use --filemap, this could lead
to superfluous revisions being converted.
Instead of fixing every converter_source, I decided to change
mercurial_sink to work around this problem.
When --filemap is used, we're interested only in revisions that touch
some specific files. If a revision doesn't change any of these files,
then we're not interested in it (at least for revisions with a single
parent; merges are special).
For mercurial_sink, we abuse this property and rollback a commit if
the manifest text hasn't changed. This avoids duplicating the logic
from localrepo.filecommit to detect unchanged files.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Thu, 04 Oct 2007 23:21:37 -0300 |
parents | 1b970cdab695 |
children |
rev | line source |
---|---|
834
78a9f95766dc
Use sh instead of bash in tests.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
814
diff
changeset
|
1 #!/bin/sh |
550 | 2 |
3 # No local source | |
4 hg clone a b | |
5 echo $? | |
6 | |
7 # No remote source | |
8 hg clone http://127.0.0.1:3121/a b | |
9 echo $? | |
10 rm -rf b # work around bug with http clone | |
11 | |
12 # Inaccessible source | |
13 mkdir a | |
14 chmod 000 a | |
15 hg clone a b | |
16 echo $? | |
17 | |
18 # Inaccessible destination | |
19 mkdir b | |
20 cd b | |
21 hg init | |
22 hg clone . ../a | |
23 echo $? | |
24 cd .. | |
25 chmod 700 a | |
3988
9dcf9d45cab8
Don't use -f for rm in tests where not needed. Drop /bin/ from /bin/rm.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
839
diff
changeset
|
26 rm -r a b |
550 | 27 |
28 # Source of wrong type | |
5087
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
29 if "$TESTDIR/hghave" -q fifo; then |
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
30 mkfifo a |
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
31 hg clone a b |
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
32 echo $? |
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
33 rm a |
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
34 else |
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
35 echo "abort: repository a not found!" |
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
36 echo 255 |
1b970cdab695
test-clone-failure: fake output upon fifo unavailabity
Patrick Mezard <pmezard@gmail.com>
parents:
3988
diff
changeset
|
37 fi |
550 | 38 |
39 # Default destination, same directory | |
40 mkdir q | |
41 cd q | |
42 hg init | |
43 cd .. | |
44 hg clone q | |
45 | |
46 true |