HomePhabricator

mq: avoid data loss upon qfold + qmv (issue3058)

Description

mq: avoid data loss upon qfold + qmv (issue3058)

When renaming a patch A as B where B was previously qfolded into A and
therefore marked as removed, a versioned MQ would first restore B before
marking it as a copy of A, thus losing A changes. The undelete() call is
probably a left-over, wctx.copy() explicitely handles the case where the
destination is removed.

Also note that status command represents "hg rm b; hg mv a b" as:

A b
  a
R a

which explains the first hunk in test-mq-qrename.t.

Details