rebase: isolate command options from internal flags
I want to get rid of per-function byteskwargs(opts).
rebase: suppress warning thrown when aborting rebase in case of dryrun
Before this patch dryrun output contained "rebase aborted" every
time we run rebase in dryrun mode and this warning does not sound
safe from a user prespective.
Differential Revision: https://phab.mercurial-scm.org/D3857
rebase: no need to store backup in case of dryrun
While aborting an unfinished rebase in case of dryrun
there is no need to store backup for those rebased csets.
Differential Revision: https://phab.mercurial-scm.org/D3827
rebase: split _origrebase() for conveniece in dryrun
This patch split _origrebase() method by extracting rbsrt part
from that to make it easy to implement dryrun in more elegant way
than before.
Differential Revision: https://phab.mercurial-scm.org/D3856
rebase: extract dryrun as a function
To avoid more number of indented blocks and make it easier to add
additional functionality in dryrun, extracted as a function.
Differential Revision: https://phab.mercurial-scm.org/D3855
rebase: add lock to cover whole dryrun process
Before this patch it is easy for another hg to interrupt
the dryrun. This patch make sure that dryrun will complete
without any interruption.
Differential Revision: https://phab.mercurial-scm.org/D3854
merge: add a 'keepconflictparent' argument to graft
Before this change, `merge.graft` was always dropping the "grafted" changeset
from the parent. This is impractical in case of conflict as the second parent
can be useful to help with conflict resolution.
We add a new boolean parameter to control this behavior. This will make using
`merge.graft` directly in shelve practicable.
Differential Revision: https://phab.mercurial-scm.org/D3692
unlinkpath: make empty directory removal optional (
issue5901) (
issue5826)
There are known cases where performing operations such as rebase from a
directory that is newly created can fail or at least lead to being in a
directory handle that no longer exists.
This is even reproducible by just doing something as simple as:
cd foo; hg rm *
The behavior is different if you use `hg addremove`, the directory is not
removed until we attempt to go back to the node after committing it:
cd foo; rm *; hg addremove; hg ci -m'bye foo'; hg co .^; hg co tip
Differential Revision: https://phab.mercurial-scm.org/D3859
py3: convert opts keys to bytes using pycompat.byteskwargs()
This fixes the py3 build broken due to
56b2074114b19e12abd9cd4c378d58b702232705.
Differential Revision: https://phab.mercurial-scm.org/D3853