extend network protocol to stop clients from locking servers
now all repositories have capabilities slot, tuple with list of names.
if 'unbundle' capability present, repo supports push where client does
not need to lock server. repository classes that have unbundle capability
also have unbundle method.
implemented for ssh now, will be base for push over http.
unbundle protocol acts this way. server tells client what heads it
has during normal negotiate step. client starts unbundle by repeat
server's heads back to it. if server has new heads, abort immediately.
otherwise, transfer changes to server. once data transferred, server
locks and checks heads again. if heads same, changes can be added.
else someone else added heads, and server aborts.
if client wants to force server to add heads, sends special heads list of
'force'.
changeset: 0:0acdaf898367
tag: tip
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: test
changeset: 1:c5c60883086f
tag: tip
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: Added tag bleah for changeset 0acdaf8983679e0aac16e811534eb49d7ee1f2b4
changeset: 0:0acdaf898367
tag: bleah
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: test
abort: working copy of .hgtags is changed (please commit .hgtags manually)
failed
use of 'hg tag NAME [REV]' is deprecated, please use 'hg tag [-r REV] NAME' instead
abort: use only one form to specify the revision
failed
use of 'hg tag NAME [REV]' is deprecated, please use 'hg tag [-r REV] NAME' instead
0acdaf8983679e0aac16e811534eb49d7ee1f2b4 bleah
0acdaf8983679e0aac16e811534eb49d7ee1f2b4 bleah0
c5c60883086f5526bd3e36814b94a73a4e75e172 bleah1
abort: '\n' cannot be used in a tag name
abort: ':' cannot be used in a tag name