Mercurial > hg > mercurial-crew-with-dirclash
annotate README @ 535:fba26990604a
Deal with failed clone/transaction interaction
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Deal with failed clone/transaction interaction
> What is happening is that something in the transaction machinery is
> causing the directory to be completely recreated.
The transaction gets rolled back by its destructor. This is critical
so it happens whenever an exception occurs that unwinds the stack.
Unfortunately, what's happening with clone is we're trying to delete
the directory during exception propagation. And a reference to the
transaction is held in the exception backtrace stack frames so it
still exists until the exception is completely resolved.
So there's no way to do the directory delete inside the exception
handling cleanly.
But we can handle it similarly to the transaction itself: use an
object with a destructor.
manifest hash: fc38550a20d64d08333f256bbedc312493c1390b
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCxDT2ywK+sNU5EO8RAjikAJ0Tej56rAutxQDfYzVbFGtT1sEC5ACgmVds
/fwdQyHn+FwshugqXLemUaM=
=3f78
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Thu, 30 Jun 2005 10:07:50 -0800 |
parents | dd8b19114fe7 |
children | a287f6cd9c6b |
rev | line source |
---|---|
445 | 1 MERCURIAL QUICK-START |
2 | |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
3 Setting up Mercurial: |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
4 |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
5 Note: some distributions fails to include bits of distutils by |
205
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
6 default, you'll need python-dev to install. You'll also need a C |
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
7 compiler and a 3-way merge tool like merge, tkdiff, or kdiff3. |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
8 |
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
9 First, unpack the source: |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
10 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
11 $ tar xvzf mercurial-<ver>.tar.gz |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
12 $ cd mercurial-<ver> |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
13 |
205
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
14 To install system-wide: |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
15 |
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
16 $ python setup.py install # change python to python2.3 if 2.2 is default |
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
17 |
205
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
18 To install in your home directory (~/bin and ~/lib, actually), run: |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
19 |
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
20 $ python2.3 setup.py install --home=~ |
507 | 21 $ export PYTHONPATH=${HOME}/lib/python # (or lib64/ on some systems) |
22 $ export PATH=${HOME}/bin:$PATH # add these to your .bashrc | |
205
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
23 |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
24 And finally: |
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
25 |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
26 $ hg # test installation, show help |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
27 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
28 If you get complaints about missing modules, you probably haven't set |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
29 PYTHONPATH correctly. |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
30 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
31 Setting up a Mercurial project: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
32 |
445 | 33 $ cd project/ |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
34 $ hg init # creates .hg |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
35 $ hg status # show changes between repo and working dir |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
36 $ hg diff # generate a unidiff |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
37 $ hg addremove # add all unknown files and remove all missing files |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
38 $ hg commit # commit all changes, edit changelog entry |
261 | 39 $ hg export <rev> # export a changeset as a diff |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
40 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
41 Mercurial will look for a file named .hgignore in the root of your |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
42 repository contains a set of regular expressions to ignore in file |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
43 paths. |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
44 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
45 Mercurial commands: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
46 |
445 | 47 $ hg help [command] # get online help |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
48 $ hg history # show changesets |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
49 $ hg log Makefile # show commits per file |
261 | 50 $ hg update # check out the tip revision |
51 $ hg update <id> # check out a specified changeset | |
160 | 52 # IDs can be tags, revision numbers, or unique |
53 # subsets of changeset hash numbers | |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
54 $ hg add foo # add a new file for the next commit |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
55 $ hg remove bar # mark a file as removed |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
56 $ hg verify # check repo integrity |
67 | 57 $ hg tags # show current tags |
81
17884f79d59d
Add annotate and blame to the command list and README
mpm@selenic.com
parents:
67
diff
changeset
|
58 $ hg annotate [files] # show changeset numbers for each file line |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
59 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
60 Branching and merging: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
61 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
62 $ cd .. |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
63 $ mkdir linux-work |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
64 $ cd linux-work |
327 | 65 $ hg init ../linux # create a new branch |
261 | 66 $ hg update # populate the working directory |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
67 $ <make changes> |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
68 $ hg commit |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
69 $ cd ../linux |
261 | 70 $ hg pull ../linux-work # pull changesets from linux-work |
445 | 71 $ hg update -m # merge the new tip from linux-work into |
261 | 72 # our working directory |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
73 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
74 Importing patches: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
75 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
76 Fast: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
77 $ patch < ../p/foo.patch |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
78 $ hg addremove |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
79 $ hg commit |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
80 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
81 Faster: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
82 $ patch < ../p/foo.patch |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
83 $ hg commit `lsdiff -p1 ../p/foo.patch` |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
84 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
85 Fastest: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
86 $ cat ../p/patchlist | xargs hg import -p1 -b ../p |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
87 |
205
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
88 Exporting a patch: |
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
89 |
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
90 (make changes) |
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
91 $ hg commit |
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
92 $ hg tip |
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
93 28237:747a537bd090880c29eae861df4d81b245aa0190 |
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
94 $ hg export 28237 > foo.patch # export changeset 28237 |
d255d99a7cbd
README: integrate some changes from Kevin Smith
mpm@selenic.com
parents:
204
diff
changeset
|
95 |
63 | 96 Network support: |
97 | |
445 | 98 # pull from the primary Mercurial repo |
1
273ce12ad8f1
Update README to discuss remote pull, rsync, and the hg repo
mpm@selenic.com
parents:
0
diff
changeset
|
99 foo$ hg init |
261 | 100 foo$ hg pull http://selenic.com/hg/ |
101 foo$ hg update # hg co works too | |
1
273ce12ad8f1
Update README to discuss remote pull, rsync, and the hg repo
mpm@selenic.com
parents:
0
diff
changeset
|
102 |
160 | 103 # export your current repo via HTTP with browsable interface |
104 foo$ hg serve -n "My repo" -p 80 | |
105 | |
327 | 106 # pushing changes to a remote repo with SSH |
107 foo$ hg push ssh://user@example.com/~/hg/ | |
108 | |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
109 # merge changes from a remote machine |
261 | 110 bar$ hg pull http://foo/ |
445 | 111 bar$ hg update -m # merge changes into your working directory |
63 | 112 |
160 | 113 # Set up a CGI server on your webserver |
445 | 114 foo$ cp hgweb.cgi ~/public_html/hg/index.cgi |
115 foo$ emacs ~/public_html/hg/index.cgi # adjust the defaults | |
63 | 116 |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
117 Symbolic repository names: |
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
118 |
327 | 119 Mercurial uses an options file called ~/.hgrc. To track locations |
120 symbolically, add a section to it like this: | |
204
161cef501e8d
README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents:
182
diff
changeset
|
121 |
327 | 122 [paths] |
123 main = http://selenic.com/hg | |
445 | 124 linux = http://www.kernel.org/hg/ |