import: wrap a transaction around the whole command
Now 'rollback' after 'import' is less surprising: it rolls back all of
the imported changesets, not just the last one. As an extra added
benefit, you don't need 'rollback -f' after 'import --bypass', which
was an undesired side effect of fixing
issue2998 (
59e8bc22506e)..
Note that this is a different take on
issue963, which complained that
rollback after importing multiple patches returned the working dir
parent to the starting point, not to the second-last patch applied.
Since we now rollback the entire import, returning the working dir to
the starting point is entirely logical. So this change also undoes
a732eebf1958, the fix to
issue963, and updates its tests accordingly.
Bottom line: rollback after import was weird before
issue963,
understandable since the fix for
issue963, and even better now.
import: improve error reporting
When applying a series of patch files, it's nice to be explicitly told *which* file is broken.
import: join base with patchurl *after* checking for stdin
This only matters when using the deprecated --base option, and
combining --base with a patch on stdin makes no sense. But it's such
an obvious bug and easy fix that I couldn't pass it by.