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

From gem5
Jump to: navigation, search
(Mercurial Queues)
Line 14: Line 14:
  
 
== Mercurial Queues ==
 
== Mercurial Queues ==
 +
 +
The mercurial queue extension is a power tool that allows you to:
 +
 +
* Manage small changes easily as a set of well-defined patches.
 +
* Edit previous patches without having a new commit.
 +
* Keep your local changes cleanly separated from upstream changes.

Revision as of 12:53, 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

The mercurial queue extension is a power tool that allows you to:

  • Manage small changes easily as a set of well-defined patches.
  • Edit previous patches without having a new commit.
  • Keep your local changes cleanly separated from upstream changes.