This is a first glance at the chainsaw-update command that I've been thinking about for a long time.
Not following the formal review process at this stage, the intent is that people can provide early feedback.
I believe everything is explained at length, perhaps with too much redundancy, but let met summarize:
- The chainsaw extension would be the place to be for tools that are very useful in some well-defined circumstances and absolutely not to be used otherwise. The slogan is "don't use a chainsaw to cut your food"
hg chainsaw-updateis intended for CI bots and deployment scripts. It ensures that a given repository exists at the prescribed path and revision, up to date with respect to the prescribed remote no matter what, pulling only what is necessary.
More ideas for
- Work around the problem with exact pulls on tags (
hg pull -r mytag && hg update mytagalmost never works). This one is on my minimal list of features.
- Reclone on failure by default (actually already hinted at in the docstring)
- Take several remotes, and fallback if one fails (+ round-robin option)