tests/test-newbranch.t
changeset 12279 28e2e3804f2e
parent 12156 4c94b6d0fb1c
child 12316 4134686b83e1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-newbranch.t	Tue Sep 14 12:20:51 2010 +0200
@@ -0,0 +1,316 @@
+  $ branchcache=.hg/branchheads.cache
+
+  $ 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
+  $ hg branch
+  foo
+  $ hg ci -m "add branch name"
+  $ hg branch bar
+  marked working directory as branch bar
+  $ 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)
+
+  $ hg branch -f default
+  marked working directory as branch default
+
+  $ hg ci -m "clear branch name"
+  created new head
+
+There should be only one default branch head
+
+  $ hg heads .
+  changeset:   3:9d567d0b51f9
+  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:dc140083783b
+  branch:      foo
+  tag:         tip
+  parent:      4:98d14f698afe
+  parent:      3:9d567d0b51f9
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     merge
+  
+  changeset:   4:98d14f698afe
+  branch:      foo
+  parent:      1:0079f24813e2
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     modify a branch
+  
+  changeset:   3:9d567d0b51f9
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     clear branch name
+  
+  changeset:   2:ed2bbf4e0102
+  branch:      bar
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     change branch name
+  
+  changeset:   1:0079f24813e2
+  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:dc140083783b
+  default                        3:9d567d0b51f9 (inactive)
+  bar                            2:ed2bbf4e0102 (inactive)
+
+  $ hg branches -q
+  foo
+  default
+  bar
+
+Test for invalid branch cache:
+
+  $ hg rollback
+  rolling back to revision 4 (undo commit)
+
+  $ cp $branchcache .hg/bc-invalid
+
+  $ hg log -r foo
+  changeset:   4:98d14f698afe
+  branch:      foo
+  tag:         tip
+  parent:      1:0079f24813e2
+  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:98d14f698afeaff8cb612dcf215ce95e639effc3
+  branch:      foo
+  tag:         tip
+  parent:      1:0079f24813e2b73a891577c243684c5066347bc8
+  parent:      -1:0000000000000000000000000000000000000000
+  manifest:    4:d01b250baaa05909152f7ae07d7a649deea0df9a
+  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:98d14f698afe
+
+  $ cat $branchcache
+  98d14f698afeaff8cb612dcf215ce95e639effc3 4
+  9d567d0b51f9e2068b054e1948e1a927f99b5874 default
+  98d14f698afeaff8cb612dcf215ce95e639effc3 foo
+  ed2bbf4e01029020711be82ca905283e883f0e11 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
+  98d14f698afeaff8cb612dcf215ce95e639effc3 4
+  9d567d0b51f9e2068b054e1948e1a927f99b5874 default
+  98d14f698afeaff8cb612dcf215ce95e639effc3 foo
+  ed2bbf4e01029020711be82ca905283e883f0e11 bar
+
+Update with no arguments: tipmost revision of the current branch:
+
+  $ hg up -q -C 0
+  $ hg up -q
+  $ hg id
+  9d567d0b51f9
+
+  $ hg up -q 1
+  $ hg up -q
+  $ hg id
+  98d14f698afe (foo) tip
+
+  $ hg branch foobar
+  marked working directory as branch foobar
+
+  $ hg up
+  abort: branch foobar not found
+
+Fastforward merge:
+
+  $ hg branch ff
+  marked working directory as branch ff
+
+  $ 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:917eb54e1b4b
+  branch:      foo
+  tag:         tip
+  parent:      4:98d14f698afe
+  parent:      5:6683a60370cb
+  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
+  $ 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)
+  $ 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)
+
+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)
+