Differences between revisions 1 and 6 (spanning 5 versions)
Revision 1 as of 2006-11-28 23:05:54
Size: 593
Editor: corecode
Comment:
Revision 6 as of 2008-01-06 13:35:36
Size: 2274
Editor: abuehl
Comment: wording
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Named branches allow assigning a symbolic name to not only one certain revision, like tags allow, but they provide a mechanism to assign a name to a complete branch. '''Named branches''' allow assigning persistent symbolic names to branches of development inside a single ["Repository"].
Line 3: Line 3:
To start working on a branch which is rooted at the current working dir revision, invoke hg with: == Create a Branch ==
To begin a branch, mark your current ["WorkingDirectory"] and then ["Commit"] it:
Line 5: Line 6:
  hg branch branchname $ hg branch
$ hg branch newfeature
$ hg branch
newfeature
$ hg ci -m "start feature branch"
$ hg parents
changeset: 3899:c08bfc770d37
branch: newfeature
tag: tip
user: Matt Mackall <mpm@selenic.com>
date: Tue Dec 19 14:20:11 2006 -0600
summary: start feature branch
Line 8: Line 20:
From this moment on, all commits will get tagged with the supplied branch name. == Commit Changes to a Branch ==
From this moment on, all commited ["ChangeSet"]s will get tagged with the supplied branch name. When ["Merge"]ing with another branch, the local branch name takes precedence:
Line 10: Line 23:
To get a list of all available branches, use:
Line 12: Line 24:
  hg branches $ hg branch
newfeature
$ hg in remote
searching for changes
changeset: 3900:3be94ff00829
branch: main
tag: tip
parent: 3898:93e5f07baf75
user: Matt Mackall <mpm@selenic.com>
date: Tue Dec 19 14:26:52 2006 -0600
summary: bug fix

$ hg pull remote
pulling from remote
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg merge
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg branch
newfeature
Line 15: Line 51:
When merging two named branches, the merge changeset will reside on the branch of the working dir. The other branches head stays. Branch names can be used anywhere that ["Tag"] names can, including log, diff, ["Push"], and ["Pull"]. When a branch has multiple ["Head"]s, the ["Tip"]most revision of the branch will be found. Here are some examples:

{{{
$ hg branches
main 3900:3be94ff00829
newfeature 3899:c08bfc770d37
$ hg log -r main
changeset: 3900:3be94ff00829
branch: main
tag: tip
parent: 3898:93e5f07baf75
user: Matt Mackall <mpm@selenic.com>
date: Tue Dec 19 14:26:52 2006 -0600
summary: bug fix
$ hg in -r main ../bd2
searching for changes
no changes found
}}}

== Switch between Branches ==
{{{
$ hg update -C main
$ hg update -C newfeature
}}}


== Links ==
 * [http://hgbook.red-bean.com/hgbookch8.html Managing releases and branchy development]

Named branches allow assigning persistent symbolic names to branches of development inside a single ["Repository"].

Create a Branch

To begin a branch, mark your current ["WorkingDirectory"] and then ["Commit"] it:

$ hg branch
$ hg branch newfeature
$ hg branch
newfeature
$ hg ci -m "start feature branch"
$ hg parents
changeset:   3899:c08bfc770d37
branch:      newfeature
tag:         tip
user:        Matt Mackall <mpm@selenic.com>
date:        Tue Dec 19 14:20:11 2006 -0600
summary:     start feature branch

Commit Changes to a Branch

From this moment on, all commited ["ChangeSet"]s will get tagged with the supplied branch name. When ["Merge"]ing with another branch, the local branch name takes precedence:

$ hg branch
newfeature
$ hg in remote
searching for changes
changeset:   3900:3be94ff00829
branch:      main
tag:         tip
parent:      3898:93e5f07baf75
user:        Matt Mackall <mpm@selenic.com>
date:        Tue Dec 19 14:26:52 2006 -0600
summary:     bug fix

$ hg pull remote
pulling from remote
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg merge
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg branch
newfeature

Branch names can be used anywhere that ["Tag"] names can, including log, diff, ["Push"], and ["Pull"]. When a branch has multiple ["Head"]s, the ["Tip"]most revision of the branch will be found. Here are some examples:

$ hg branches
main                           3900:3be94ff00829
newfeature                     3899:c08bfc770d37
$ hg log -r main
changeset:   3900:3be94ff00829
branch:      main
tag:         tip
parent:      3898:93e5f07baf75
user:        Matt Mackall <mpm@selenic.com>
date:        Tue Dec 19 14:26:52 2006 -0600
summary:     bug fix
$ hg in -r main ../bd2
searching for changes
no changes found

Switch between Branches

$ hg update -C main
$ hg update -C newfeature

NamedBranches (last edited 2013-12-26 09:53:26 by Tovim)