summaryrefslogtreecommitdiff
path: root/tests/test-newbranch.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-newbranch.t')
-rw-r--r--tests/test-newbranch.t330
1 files changed, 330 insertions, 0 deletions
diff --git a/tests/test-newbranch.t b/tests/test-newbranch.t
new file mode 100644
index 0000000..f1099b8
--- /dev/null
+++ b/tests/test-newbranch.t
@@ -0,0 +1,330 @@
+ $ branchcache=.hg/cache/branchheads
+
+ $ hg init t
+ $ cd t
+
+ $ hg branches
+ $ echo foo > a
+ $ hg add a
+ $ hg ci -m "initial"
+ $ hg branch foo
+ marked working directory as branch foo
+ (branches are permanent and global, did you want a bookmark?)
+ $ hg branch
+ foo
+ $ hg ci -m "add branch name"
+ $ hg branch bar
+ marked working directory as branch bar
+ (branches are permanent and global, did you want a bookmark?)
+ $ hg ci -m "change branch name"
+
+Branch shadowing:
+
+ $ hg branch default
+ abort: a branch of the same name already exists
+ (use 'hg update' to switch to it)
+ [255]
+
+ $ hg branch -f default
+ marked working directory as branch default
+ (branches are permanent and global, did you want a bookmark?)
+
+ $ hg ci -m "clear branch name"
+ created new head
+
+There should be only one default branch head
+
+ $ hg heads .
+ changeset: 3:1c28f494dae6
+ tag: tip
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: clear branch name
+
+
+ $ hg co foo
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg branch
+ foo
+ $ echo bleah > a
+ $ hg ci -m "modify a branch"
+
+ $ hg merge default
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+ $ hg branch
+ foo
+ $ hg ci -m "merge"
+
+ $ hg log
+ changeset: 5:530046499edf
+ branch: foo
+ tag: tip
+ parent: 4:adf1a74a7f7b
+ parent: 3:1c28f494dae6
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: merge
+
+ changeset: 4:adf1a74a7f7b
+ branch: foo
+ parent: 1:6c0e42da283a
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: modify a branch
+
+ changeset: 3:1c28f494dae6
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: clear branch name
+
+ changeset: 2:c21617b13b22
+ branch: bar
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: change branch name
+
+ changeset: 1:6c0e42da283a
+ branch: foo
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: add branch name
+
+ changeset: 0:db01e8ea3388
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: initial
+
+ $ hg branches
+ foo 5:530046499edf
+ default 3:1c28f494dae6 (inactive)
+ bar 2:c21617b13b22 (inactive)
+
+ $ hg branches -q
+ foo
+ default
+ bar
+
+Test for invalid branch cache:
+
+ $ hg rollback
+ repository tip rolled back to revision 4 (undo commit)
+ working directory now based on revisions 4 and 3
+
+ $ cp $branchcache .hg/bc-invalid
+
+ $ hg log -r foo
+ changeset: 4:adf1a74a7f7b
+ branch: foo
+ tag: tip
+ parent: 1:6c0e42da283a
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: modify a branch
+
+ $ cp .hg/bc-invalid $branchcache
+
+ $ hg --debug log -r foo
+ invalidating branch cache (tip differs)
+ changeset: 4:adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6
+ branch: foo
+ tag: tip
+ phase: draft
+ parent: 1:6c0e42da283a56b5edc5b4fadb491365ec7f5fa8
+ parent: -1:0000000000000000000000000000000000000000
+ manifest: 1:8c342a37dfba0b3d3ce073562a00d8a813c54ffe
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ files: a
+ extra: branch=foo
+ description:
+ modify a branch
+
+
+ $ rm $branchcache
+ $ echo corrupted > $branchcache
+
+ $ hg log -qr foo
+ 4:adf1a74a7f7b
+
+ $ cat $branchcache
+ adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6 4
+ 1c28f494dae69a2f8fc815059d257eccf3fcfe75 default
+ adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6 foo
+ c21617b13b220988e7a2e26290fbe4325ffa7139 bar
+
+Push should update the branch cache:
+
+ $ hg init ../target
+
+Pushing just rev 0:
+
+ $ hg push -qr 0 ../target
+
+ $ cat ../target/$branchcache
+ db01e8ea3388fd3c7c94e1436ea2bd6a53d581c5 0
+ db01e8ea3388fd3c7c94e1436ea2bd6a53d581c5 default
+
+Pushing everything:
+
+ $ hg push -qf ../target
+
+ $ cat ../target/$branchcache
+ adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6 4
+ 1c28f494dae69a2f8fc815059d257eccf3fcfe75 default
+ adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6 foo
+ c21617b13b220988e7a2e26290fbe4325ffa7139 bar
+
+Update with no arguments: tipmost revision of the current branch:
+
+ $ hg up -q -C 0
+ $ hg up -q
+ $ hg id
+ 1c28f494dae6
+
+ $ hg up -q 1
+ $ hg up -q
+ $ hg id
+ adf1a74a7f7b (foo) tip
+
+ $ hg branch foobar
+ marked working directory as branch foobar
+ (branches are permanent and global, did you want a bookmark?)
+
+ $ hg up
+ abort: branch foobar not found
+ [255]
+
+Fastforward merge:
+
+ $ hg branch ff
+ marked working directory as branch ff
+ (branches are permanent and global, did you want a bookmark?)
+
+ $ echo ff > ff
+ $ hg ci -Am'fast forward'
+ adding ff
+
+ $ hg up foo
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+ $ hg merge ff
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+ $ hg branch
+ foo
+ $ hg commit -m'Merge ff into foo'
+ $ hg parents
+ changeset: 6:185ffbfefa30
+ branch: foo
+ tag: tip
+ parent: 4:adf1a74a7f7b
+ parent: 5:1a3c27dc5e11
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: Merge ff into foo
+
+ $ hg manifest
+ a
+ ff
+
+
+Test merging, add 3 default heads and one test head:
+
+ $ cd ..
+ $ hg init merges
+ $ cd merges
+ $ echo a > a
+ $ hg ci -Ama
+ adding a
+
+ $ echo b > b
+ $ hg ci -Amb
+ adding b
+
+ $ hg up 0
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo c > c
+ $ hg ci -Amc
+ adding c
+ created new head
+
+ $ hg up 0
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo d > d
+ $ hg ci -Amd
+ adding d
+ created new head
+
+ $ hg up 0
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ hg branch test
+ marked working directory as branch test
+ (branches are permanent and global, did you want a bookmark?)
+ $ echo e >> e
+ $ hg ci -Ame
+ adding e
+
+ $ hg log
+ changeset: 4:3a1e01ed1df4
+ branch: test
+ tag: tip
+ parent: 0:cb9a9f314b8b
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: e
+
+ changeset: 3:980f7dc84c29
+ parent: 0:cb9a9f314b8b
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: d
+
+ changeset: 2:d36c0562f908
+ parent: 0:cb9a9f314b8b
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: c
+
+ changeset: 1:d2ae7f538514
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: b
+
+ changeset: 0:cb9a9f314b8b
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: a
+
+Implicit merge with test branch as parent:
+
+ $ hg merge
+ abort: branch 'test' has one head - please merge with an explicit rev
+ (run 'hg heads' to see all heads)
+ [255]
+ $ hg up -C default
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+Implicit merge with default branch as parent:
+
+ $ hg merge
+ abort: branch 'default' has 3 heads - please merge with an explicit rev
+ (run 'hg heads .' to see heads)
+ [255]
+
+3 branch heads, explicit merge required:
+
+ $ hg merge 2
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+ $ hg ci -m merge
+
+2 branch heads, implicit merge works:
+
+ $ hg merge
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+ $ cd ..