Mercurial > hg
annotate tests/test-commit-multiple.t @ 24814:60e4258b2052 stable
help: fix typo commited -> committed
author | Javi Merino <merino.jav@gmail.com> |
---|---|
date | Sun, 19 Apr 2015 11:37:29 +0100 |
parents | aa9385f983fa |
children | 701df761aa94 |
rev | line source |
---|---|
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
1 # reproduce issue2264, issue2516 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
2 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
3 create test repo |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
4 $ cat <<EOF >> $HGRCPATH |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
5 > [extensions] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
6 > transplant = |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
7 > EOF |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
8 $ hg init repo |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
9 $ cd repo |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
10 $ template="{rev} {desc|firstline} [{branch}]\n" |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
11 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
12 # we need to start out with two changesets on the default branch |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
13 # in order to avoid the cute little optimization where transplant |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
14 # pulls rather than transplants |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
15 add initial changesets |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
16 $ echo feature1 > file1 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
17 $ hg ci -Am"feature 1" |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
18 adding file1 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
19 $ echo feature2 >> file2 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
20 $ hg ci -Am"feature 2" |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
21 adding file2 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
22 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
23 # The changes to 'bugfix' are enough to show the bug: in fact, with only |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
24 # those changes, it's a very noisy crash ("RuntimeError: nothing |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
25 # committed after transplant"). But if we modify a second file in the |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
26 # transplanted changesets, the bug is much more subtle: transplant |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
27 # silently drops the second change to 'bugfix' on the floor, and we only |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
28 # see it when we run 'hg status' after transplanting. Subtle data loss |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
29 # bugs are worse than crashes, so reproduce the subtle case here. |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
30 commit bug fixes on bug fix branch |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
31 $ hg branch fixes |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
32 marked working directory as branch fixes |
15615 | 33 (branches are permanent and global, did you want a bookmark?) |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
34 $ echo fix1 > bugfix |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
35 $ echo fix1 >> file1 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
36 $ hg ci -Am"fix 1" |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
37 adding bugfix |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
38 $ echo fix2 > bugfix |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
39 $ echo fix2 >> file1 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
40 $ hg ci -Am"fix 2" |
20117
aa9385f983fa
tests: don't load unnecessary graphlog extension
Martin Geisler <martin@geisler.net>
parents:
16913
diff
changeset
|
41 $ hg log -G --template="$template" |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
42 @ 3 fix 2 [fixes] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
43 | |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
44 o 2 fix 1 [fixes] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
45 | |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
46 o 1 feature 2 [default] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
47 | |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
48 o 0 feature 1 [default] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
49 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
50 transplant bug fixes onto release branch |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
51 $ hg update 0 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
52 1 files updated, 0 files merged, 2 files removed, 0 files unresolved |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
53 $ hg branch release |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
54 marked working directory as branch release |
15615 | 55 (branches are permanent and global, did you want a bookmark?) |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
56 $ hg transplant 2 3 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
57 applying [0-9a-f]{12} (re) |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
58 [0-9a-f]{12} transplanted to [0-9a-f]{12} (re) |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
59 applying [0-9a-f]{12} (re) |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
60 [0-9a-f]{12} transplanted to [0-9a-f]{12} (re) |
20117
aa9385f983fa
tests: don't load unnecessary graphlog extension
Martin Geisler <martin@geisler.net>
parents:
16913
diff
changeset
|
61 $ hg log -G --template="$template" |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
62 @ 5 fix 2 [release] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
63 | |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
64 o 4 fix 1 [release] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
65 | |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
66 | o 3 fix 2 [fixes] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
67 | | |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
68 | o 2 fix 1 [fixes] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
69 | | |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
70 | o 1 feature 2 [default] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
71 |/ |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
72 o 0 feature 1 [default] |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
73 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
74 $ hg status |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
75 $ hg status --rev 0:4 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
76 M file1 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
77 A bugfix |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
78 $ hg status --rev 4:5 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
79 M bugfix |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
80 M file1 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
81 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
82 now test that we fixed the bug for all scripts/extensions |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
83 $ cat > $TESTTMP/committwice.py <<__EOF__ |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
84 > from mercurial import ui, hg, match, node |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
85 > from time import sleep |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
86 > |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
87 > def replacebyte(fn, b): |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
88 > f = open(fn, "rb+") |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
89 > f.seek(0, 0) |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
90 > f.write(b) |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
91 > f.close() |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
92 > |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
93 > def printfiles(repo, rev): |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
94 > print "revision %s files: %s" % (rev, repo[rev].files()) |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
95 > |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
96 > repo = hg.repository(ui.ui(), '.') |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
97 > assert len(repo) == 6, \ |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
98 > "initial: len(repo): %d, expected: 6" % len(repo) |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
99 > |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
100 > replacebyte("bugfix", "u") |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
101 > sleep(2) |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
102 > try: |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
103 > print "PRE: len(repo): %d" % len(repo) |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
104 > wlock = repo.wlock() |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
105 > lock = repo.lock() |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
106 > replacebyte("file1", "x") |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
107 > repo.commit(text="x", user="test", date=(0, 0)) |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
108 > replacebyte("file1", "y") |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
109 > repo.commit(text="y", user="test", date=(0, 0)) |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
110 > print "POST: len(repo): %d" % len(repo) |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
111 > finally: |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
112 > lock.release() |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
113 > wlock.release() |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
114 > printfiles(repo, 6) |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
115 > printfiles(repo, 7) |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
116 > __EOF__ |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
117 $ $PYTHON $TESTTMP/committwice.py |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
118 PRE: len(repo): 6 |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
119 POST: len(repo): 8 |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
120 revision 6 files: ['bugfix', 'file1'] |
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
121 revision 7 files: ['file1'] |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
122 |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
123 Do a size-preserving modification outside of that process |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
124 $ echo abcd > bugfix |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
125 $ hg status |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
126 M bugfix |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
127 $ hg log --template "{rev} {desc} {files}\n" -r5: |
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
128 5 fix 2 bugfix file1 |
13749
8bb03283e9b9
test-commit-multiple.t: improve committwice.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
13704
diff
changeset
|
129 6 x bugfix file1 |
13704
a464763e99f1
dirstate: avoid a race with multiple commits in the same process
Greg Ward <greg@gerg.ca>
parents:
diff
changeset
|
130 7 y file1 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
15615
diff
changeset
|
131 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
15615
diff
changeset
|
132 $ cd .. |