Differences between revisions 2 and 25 (spanning 23 versions)
Revision 2 as of 2012-06-25 18:49:47
Size: 1528
Editor: 93-172-104-238
Comment: conflicts
Revision 25 as of 2012-11-25 15:18:45
Size: 1208
Editor: 195
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma section-numbers 2 ## page was renamed from BranchRenaming
Line 3: Line 3:
= Branch Renaming = = Mutable Branches =
''Author: Gideon Sireling
Line 5: 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 7: Line 8:
<<TableOfContents>> Issue tracker: http://code.accursoft.com/mutable-branches/issues''
Line 9: Line 10:
== Visioning Branch Names == == Overview ==
Line 11: 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 13: Line 14:
== Conflicts == == Renaming Branches ==
Line 15: Line 16:
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. 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 19: Line 22:
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 21: Line 24:
== Backwards Compatibility == ''This feature has not yet been implemented.''
Line 23: Line 26:
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. == Future Development ==
Line 25: Line 28:
== Forwards Compatibility ==

Future development could add o
ther fields to .hgbranches, such as description or owner.
Other fields could be added to `.hgbranches`, such as the branch's description or owner.
Line 30: Line 30:
CategoryNewFeatures CategoryDeveloper 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.

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.

This feature has not yet been implemented.

Future Development

Other fields could be added to .hgbranches, such as the branch's description or owner.


CategoryExtensionsByOthers

MutableBranches (last edited 2019-08-22 10:56:57 by gidyn)