Mercurial > hg > mercurial-crew-with-dirclash
annotate tests/test-symlinks @ 5192:33015dac5df5
convert: fix mercurial_sink.putcommit
Changeset 4ebc8693ce72 added some code to putcommit to avoid creating a
revision that touches no files, but this can break regular conversions
from some repositories:
- conceptually, since we're converting a repo, we should try to make
the new hg repo as similar as possible to the original repo - we
should create a new changeset, even if the original revision didn't
touch any files (maybe the commit message had some important bit);
- even if a "regular" revision that doesn't touch any file may seem
weird (and maybe even broken), it's completely legitimate for a merge
revision to not touch any file, and, if we just skip it, the
converted repo will end up with wrong history and possibly an extra
head.
As an example, say the crew and main hg repos are sync'ed. Somebody
sends an important patch to the mailing list. Matt quickly applies
and pushes it. But at the same time somebody also applies it to crew
and pushes it. Suppose the commit message ended up being a bit
different (say, there was a typo and somebody didn't fix it) or that
the date ended up being different (because of different patch-applying
scripts): the changeset hashes will be different, but the manifests
will be the same.
Since both changesets were pushed to public repos, it's hard to recall
them. If both are merged, the manifest from the resulting merge
revision will have the exact same contents as its parents - i.e. the
merge revision really doesn't touch any file at all.
To keep the file filtering stuff "working", the generic code was changed
to skip empty revisions if we're filtering the repo, fixing a bug in the
process (we want parents[0] instead of tip).
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Fri, 17 Aug 2007 20:18:05 -0300 |
parents | 35d47b06d4e3 |
children |
rev | line source |
---|---|
1408 | 1 #!/bin/sh |
2 #Test bug regarding symlinks that showed up in hg 0.7 | |
3 #Author: Matthew Elder <sseses@gmail.com> | |
4 | |
4882
25d753efd48e
test-symlink-basic: require symlinks availability
Patrick Mezard <pmezard@gmail.com>
parents:
4137
diff
changeset
|
5 "$TESTDIR/hghave" symlink || exit 80 |
25d753efd48e
test-symlink-basic: require symlinks availability
Patrick Mezard <pmezard@gmail.com>
parents:
4137
diff
changeset
|
6 |
1408 | 7 #make and initialize repo |
8 hg init test; cd test; | |
9 | |
10 #make a file and a symlink | |
11 touch foo; ln -s foo bar; | |
12 | |
13 #import with addremove -- symlink walking should _not_ screwup. | |
14 hg addremove | |
15 | |
16 #commit -- the symlink should _not_ appear added to dir state | |
17 hg commit -m 'initial' | |
18 | |
19 #add a new file so hg will let me commit again | |
20 touch bomb | |
21 | |
22 #again, symlink should _not_ show up on dir state | |
23 hg addremove | |
24 | |
25 #Assert screamed here before, should go by without consequence | |
26 hg commit -m 'is there a bug?' | |
1487
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
27 |
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:
3750
diff
changeset
|
28 cd .. ; rm -r test |
1487
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
29 hg init test; cd test; |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
30 |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
31 mkdir dir |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
32 touch a.c dir/a.o dir/b.o |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
33 # test what happens if we want to trick hg |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
34 hg commit -A -m 0 |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
35 echo "relglob:*.o" > .hgignore |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
36 rm a.c |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
37 rm dir/a.o |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
38 rm dir/b.o |
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
39 mkdir dir/a.o |
3750
0f550b87deb8
Compatibility fix for 'ln -sf'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2115
diff
changeset
|
40 ln -s nonexist dir/b.o |
1487
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
41 mkfifo a.c |
1620
6c61646fee5e
Adjusted all but one test output for the new behaviour of localrepo.changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1527
diff
changeset
|
42 # it should show a.c, dir/a.o and dir/b.o deleted |
1487
2bc6cd62a29c
fix handling of files of unsupported type in the walk code
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1408
diff
changeset
|
43 hg status |
1527
c13fce7167c2
don't print anything about file of unsupported type unless
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1487
diff
changeset
|
44 hg status a.c |
2115
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
45 |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
46 echo '# test absolute path through symlink outside repo' |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
47 cd .. |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
48 p=`pwd` |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
49 hg init x |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
50 ln -s x y |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
51 cd x |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
52 touch f |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
53 hg add f |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
54 hg status $p/y/f |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
55 |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
56 echo '# try symlink outside repo to file inside' |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
57 ln -s x/f ../z |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
58 # this should fail |
fd77b7ee4aac
Fix issue 165: `hg status' with abs path containing a symlink-to-dir fails
Jim Meyering <list+hg@meyering.net>
parents:
1620
diff
changeset
|
59 hg status ../z && { echo hg mistakenly exited with status 0; exit 1; } || : |
4137
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
60 |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
61 cd .. ; rm -r test |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
62 hg init test; cd test; |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
63 |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
64 echo '# try cloning symlink in a subdir' |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
65 echo '1. commit a symlink' |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
66 mkdir -p a/b/c |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
67 cd a/b/c |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
68 ln -s /path/to/symlink/source demo |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
69 cd ../../.. |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
70 hg stat |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
71 hg commit -A -m 'add symlink in a/b/c subdir' |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
72 echo '2. clone it' |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
73 cd .. |
26596a6b6518
Create the parent directory when checking out symlinks.
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
3988
diff
changeset
|
74 hg clone test testclone |
5071
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
75 |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
76 echo '# git symlink diff' |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
77 cd testclone |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
78 hg diff --git -r null:tip |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
79 hg export --git tip > ../sl.diff |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
80 echo '# import git symlink diff' |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
81 hg rm a/b/c/demo |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
82 hg commit -m'remove link' |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
83 hg import ../sl.diff |
35d47b06d4e3
patch: add git symlink support
Brendan Cully <brendan@kublai.com>
parents:
4882
diff
changeset
|
84 hg diff --git -r 1:tip |