Differences between revisions 1 and 4 (spanning 3 versions)
Revision 1 as of 2006-11-28 23:05:54
Size: 593
Editor: corecode
Comment:
Revision 4 as of 2007-10-15 05:51:19
Size: 2216
Comment:
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 working directory 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 commits will get tagged with the supplied branch name. When merging 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 heads, the tipmost 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 working directory 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 commits will get tagged with the supplied branch name. When merging 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 heads, the tipmost 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)