Difference between revisions of "Managing Local Changes with Mercurial Queues"

From gem5
Jump to: navigation, search
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 17: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.

Mercurial Queues