Mercurial > hg
view tests/test-help.out @ 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 | 98a2935c3d6c |
children | 9db6d5455642 |
line wrap: on
line source
+ hg -q help hg commands: add add the specified files on the next commit addremove add all new files, delete all missing files annotate show changeset information per file line cat output the latest or given revision of a file clone make a copy of an existing repository commit commit the specified files or all outstanding changes copy mark a file as copied or renamed for the next commit diff diff working directory (or selected files) export dump the changeset header and diffs for a revision forget don't add the specified files on the next commit heads show current repository heads help show help for a given command or all commands identify print information about the working copy import import an ordered set of patches init create a new repository in the current directory log show the revision history of the repository or a single file manifest output the latest or given revision of the project manifest parents show the parents of the current working dir pull pull changes from the specified source push push changes to the specified destination rawcommit raw commit interface recover roll back an interrupted transaction remove remove the specified files on the next commit root print the root (top) of the current working dir serve export the repository via HTTP status show changed files in the working directory tag add a tag for the current tip or a given revision tags list repository tags tip show the tip revision undo undo the last transaction update update or merge working directory verify verify the integrity of the repository version output version and copyright information + hg add -h hg add: option -h not recognized hg add [files] add the specified files on the next commit + hg help diff hg diff [-r A] [-r B] [files] -r --rev revision diff working directory (or selected files) + hg help foo hg: unknown command foo + hg -q commands hg: unknown command 'commands' hg commands: add add the specified files on the next commit addremove add all new files, delete all missing files annotate show changeset information per file line cat output the latest or given revision of a file clone make a copy of an existing repository commit commit the specified files or all outstanding changes copy mark a file as copied or renamed for the next commit diff diff working directory (or selected files) export dump the changeset header and diffs for a revision forget don't add the specified files on the next commit heads show current repository heads help show help for a given command or all commands identify print information about the working copy import import an ordered set of patches init create a new repository in the current directory log show the revision history of the repository or a single file manifest output the latest or given revision of the project manifest parents show the parents of the current working dir pull pull changes from the specified source push push changes to the specified destination rawcommit raw commit interface recover roll back an interrupted transaction remove remove the specified files on the next commit root print the root (top) of the current working dir serve export the repository via HTTP status show changed files in the working directory tag add a tag for the current tip or a given revision tags list repository tags tip show the tip revision undo undo the last transaction update update or merge working directory verify verify the integrity of the repository version output version and copyright information + exit 0