view tests/test-ssh.out @ 2439:e8c4f3d3df8c

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'.
author Vadim Gelfer <vadim.gelfer@gmail.com>
date Thu, 15 Jun 2006 16:37:23 -0700
parents b2ae81a7df29
children ffb895f16925
line wrap: on
line source

# creating 'remote'
# clone remote
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
# verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
1 files, 1 changesets, 1 total revisions
# empty default pull
default = ssh://user@dummy/remote
pulling from ssh://user@dummy/remote
searching for changes
no changes found
# local change
# updating rc
# find outgoing
searching for changes
changeset:   1:c54836a570be
tag:         tip
user:        test
date:        Mon Jan 12 13:46:40 1970 +0000
summary:     add

# find incoming on the remote side
searching for changes
changeset:   1:c54836a570be
tag:         tip
user:        test
date:        Mon Jan 12 13:46:40 1970 +0000
summary:     add

# push
pushing to ssh://user@dummy/remote
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
# check remote tip
changeset:   1:c54836a570be
tag:         tip
user:        test
date:        Mon Jan 12 13:46:40 1970 +0000
summary:     add

checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
1 files, 2 changesets, 2 total revisions
bleah
# push should fail
pushing to ssh://user@dummy/remote
searching for changes
abort: unsynced remote changes!
(did you forget to sync? use push -f to force)
# push should succeed
pushing to ssh://user@dummy/remote
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
Got arguments 1:user@dummy 2:hg -R local serve --stdio 3: 4: 5:
Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5: