Sat Nov 6 17:12:18 CDT 2010
Here is my use case: I work with "proj" which depends on "lib". I want to
implement a new feature in proj which requires a more recent lib. I update
lib revision (but lib is clean), work on my feature. At this point I want to
qnew and switch back to something else.
This case seems perfectly legit and in fact I do that daily with
hgsubversion which has something a similar to subrepo to handle
svn:externals. There is no problem with MQ because:
- The externals state is completely defined in .hgsvnexternals, including
the target revision. After editing it, users have to explicitely update the
externals using another command. hgsubversion does not automatically record
stuff on commits.
- We do not care about externals dirtiness.
Instead of preventing MQ to handle subrepos I suggest that:
- MQ aborts if any subrepo is dirty before creating/amending a patch
- MQ updates .hgsubstate when creating/amending a patch
More information about the Mercurial-devel