The hg book recommends the following workflow for updating your mqueue patches when the remote repository has been updated Link:
hg qpush --all
# QSave is now depricated (according to hg qsave --help). It appears to have been
# depricated since at least 2010. Additionally, QSave is not working in my environment
# due to my organization's commit hooks
hg qsave
hg pull
hg update --clean
hg qpush -m -a
The qsave
command says:
> This command is deprecated, use "hg rebase" instead.
What is the new recommended workflow? What I want to do:
- Check out code
- Make some commits to it (probably but not necessarily using mqueues)
- Pull the latest changes from the remote repo
- Integrate the changes into my repo. I am open to a rebase or a merge workflow, however I want to use some kind of 3-way merge tool to resolve conflicts
Edit: The workflow I am currently using now is:
hg qpop --all
hg pullup
hg qpush # repeat until no patches left.
The issue with this workflow is that it generates .reject
files.
I know I can also do a:
hg qpush --all
hg pull --rebase
The issue with this is that I don't know how to abort or undo it since it actually modifies my patches. I think it creates some kind of backup as described by this message: saved backup bundle to /someDirectory/.hg/strip-backup/424323abc42a-backup.hg
.
Edit:
I just did a hg pull --rebase
and it worked well... I think that this is what I am going to use going forward. My main uncomfort with this is that I really would prefer to merge than rebase. I want to be able to see the real parent of my commits and how I resolved conflicts. Unfortunately, I don't think that merging and using mqueues is a compatible workflow. It probably doesn't make sense to pop a patch that has history on top of it...
Edit:
Thinking about this a bit more, I think that this is the workflow I am going to try next time when I know I am going to have hairy conflicts:
# Convert patches to real commits:
hg qfinish # some args
# Pull remote changes
# Merge remote changes
I think in theory after doing that I could Rebase my merges away like in senario 7.