Difference between revisions of "Managing Local Changes with Mercurial Queues"
From gem5
					
										
					
					| Line 5: | Line 5: | ||
* If a useful change is added upstream, it's a long, tedious process to update.  | * If a useful change is added upstream, it's a long, tedious process to update.  | ||
| − | If a user chooses to keep their local repository up-to-date with the source tree they typically use [http://mercurial.selenic.com/wiki/Branch branches] and merge any upstream changes into their branches. This approach also has its downsides:  | + | If a user chooses to keep their local repository up-to-date with the source tree they typically use [http://mercurial.selenic.com/wiki/Branch named branches] and merge any upstream changes into their branches. This approach also has its downsides:  | 
* If any local change needs to be updated, it requires a separate commit.  | * If any local change needs to be updated, it requires a separate commit.  | ||
* If you have several small, unrelated changes and separate branches must be maintained.  | * If you have several small, unrelated changes and separate branches must be maintained.  | ||
* Upstream changes must be merged into the local branches.  | * Upstream changes must be merged into the local branches.  | ||
| + | |||
| + | A powerful tool that overcomes these problems is the [http://mercurial.selenic.com/wiki/MqExtension mercurial queue] extension.  | ||
== Mercurial Queues ==  | == Mercurial Queues ==  | ||
Revision as of 12:51, 16 February 2013
Repository Management Problem
gem5 users typically opt to freeze their repository at a particular changeset when starting a new research project. This approach has several downsides:
- It discourages users from contributing back any useful changes they may develop.
 - If a useful change is added upstream, it's a long, tedious process to update.
 
If a user chooses to keep their local repository up-to-date with the source tree they typically use named branches and merge any upstream changes into their branches. This approach also has its downsides:
- If any local change needs to be updated, it requires a separate commit.
 - If you have several small, unrelated changes and separate branches must be maintained.
 - Upstream changes must be merged into the local branches.
 
A powerful tool that overcomes these problems is the mercurial queue extension.