Size: 1990
Comment: change title to noun
|
Size: 1465
Comment: now compatible with 2.5
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
#pragma section-numbers 2 {X} This page describes a proposal that was rejected for core Mercurial. However, it may be implemented as a third party extension. |
|
Line 7: | Line 4: |
''Author: Gideon Sireling | |
Line 8: | Line 6: |
A recurring compliant against [[NamedBranches|named branches]] is that the name is permanent. This page describes a backward-compatible proposal to separate a branch's identity from its name. | Repository: http://code.accursoft.com/mutable-branches/ |
Line 10: | Line 8: |
<<TableOfContents>> | Issue tracker: http://code.accursoft.com/mutable-branches/issues'' |
Line 12: | Line 10: |
== Visioning Branch Names == | == Overview == |
Line 14: | Line 12: |
An .hgbranches file in the working directory will keep a mapping of branch IDs to their names. When a new branch is created, the changeset's branch field will be set to a unique ID. An entry will then be made in .hgbranches, mapping the branch's ID to its name. | The mutable-branches extension allows [[NamedBranches|named branches]] to be renamed, without rewriting history. Renamings are tracked by a file in the working directory. |
Line 16: | Line 14: |
This is all done behind the scenes, and could be implemented an an extension. There are no changes to Mercurial's UI. | == Installation == |
Line 18: | Line 16: |
== Conflicts == | Clone the repository to your local hard drive, or simply download [[http://code.accursoft.com/mutable-branches/raw/tip/mutable-branches.py|mutable-branches.py]]. Then add the following to your mercurial.ini: |
Line 20: | Line 18: |
If conflicting changes have been made to .hgbranches on different branches, or if it contains conflicting entries, this will be resolved by the same rules that apply to .hgtags. | {{{ [extensions] mutable-branches = path/to/mutable-branches.py }}} == Renaming Branches == To start renaming branches, create a file called `.hgbranches` in the root of the working directory, and check it in. Each line in `.hgbranches` consists of a space-delimited pair such as `oldBranch newBranch`. If the branch name contains spaces, it should be quoted. There are no changes to Mercurial's UI, other than not scolding the user when they create a new branch. |
Line 24: | Line 31: |
If the user creates a local branch which they do not intend pushing, it can be recorded in .hg/localbranches. Mercurial should warn the user if they attempt to push a changeset whose branch name is recorded in localbranches, and tell them how to move it to .hgbranches. | If the user creates a local branch which they do not intend pushing, it can be recorded in `.hg/localbranches`. Local renamings override repository renamings. |
Line 26: | Line 33: |
== Backwards Compatibility == | == Future Development == |
Line 28: | Line 35: |
If a branch ID is not recorded in .hgbranches or .hg/localbranches, the ID will be used as the branch name. Thus, existing branches can be used (and renamed) without any modifications. If the branch is renamed, older clients will continue to use the old name. == Forwards Compatibility == Future development could add other fields to .hgbranches, such as description or owner. == hg-ibranch == The [[http://bitbucket.org/andre_felipe_dias/hg-ibranch|hg-ibranch]] extension implements a similar concept, but uses tip markers instead of .hgbranches. |
Other fields could be added to `.hgbranches`, such as the branch's description or owner. |
Line 39: | Line 37: |
CategoryRejectedProposal | CategoryExtensionsByOthers |
Mutable Branches
Author: Gideon Sireling Repository: http://code.accursoft.com/mutable-branches/ Issue tracker: http://code.accursoft.com/mutable-branches/issues
Overview
The mutable-branches extension allows named branches to be renamed, without rewriting history. Renamings are tracked by a file in the working directory.
Installation
Clone the repository to your local hard drive, or simply download mutable-branches.py. Then add the following to your mercurial.ini:
[extensions] mutable-branches = path/to/mutable-branches.py
Renaming Branches
To start renaming branches, create a file called .hgbranches in the root of the working directory, and check it in. Each line in .hgbranches consists of a space-delimited pair such as oldBranch newBranch. If the branch name contains spaces, it should be quoted.
There are no changes to Mercurial's UI, other than not scolding the user when they create a new branch.
Local Branches
If the user creates a local branch which they do not intend pushing, it can be recorded in .hg/localbranches. Local renamings override repository renamings.
Future Development
Other fields could be added to .hgbranches, such as the branch's description or owner.