User:Robin Cornelius/hg folding patchsets

From Second Life Wiki
Jump to navigation Jump to search

Folding patch sets with Mecurial

With the Stowstorm project we hit a conceptual conflict with the commit little and often method of working, where one commits small changes in an incremental way when working on a given project feature/bugfix. At the end of the project it is desirable to provide one change set that contains your feature or bug so that the Snowstorm team can pull from your repository. It is very undesirable for them to pull in 100 Small changesets, that may contain trivial or useless information (to anyone other than yourself), that form your overall feature/bugfix.

Under git this is extreamly trivial with squash, you can just squash down a bunch of commits to a single commit. Under Hg this is still possible but not quite as obvious.

ensure there are no exiting patches in your repository, then work out what the start and end commit ids are for your series of commits you want to squash.

hg qimport -r commit_start_id:commit_end_id
hg qgoto qbase

windows

FOR /F "delims=" %i IN ('hg qunapp') DO @set PATCHSET=%i
hg qfold %PATCHSET%

linux

 hg qfold $(hg qunapp) 

then finish up

hg gfinish qbase

Do not share a repository then squash the commits and push again, it will probably cause chaos.