diff -r 648323f41a89 -r 0d37b9b21467 tests/test-clone.t --- a/tests/test-clone.t Wed Jul 08 16:43:49 2015 -0500 +++ b/tests/test-clone.t Wed Jul 08 16:19:09 2015 -0700 @@ -674,4 +674,342 @@ $ hg clone -U -q src dst $ hg -R dst log -q 0:e1bab28bca43 + +Create repositories to test auto sharing functionality + + $ cat >> $HGRCPATH << EOF + > [extensions] + > share= + > EOF + + $ hg init empty + $ hg init source1a + $ cd source1a + $ echo initial1 > foo + $ hg -q commit -A -m initial + $ echo second > foo + $ hg commit -m second $ cd .. + + $ hg init filteredrev0 + $ cd filteredrev0 + $ cat >> .hg/hgrc << EOF + > [experimental] + > evolution=createmarkers + > EOF + $ echo initial1 > foo + $ hg -q commit -A -m initial0 + $ hg -q up -r null + $ echo initial2 > foo + $ hg -q commit -A -m initial1 + $ hg debugobsolete c05d5c47a5cf81401869999f3d05f7d699d2b29a e082c1832e09a7d1e78b7fd49a592d372de854c8 + $ cd .. + + $ hg -q clone --pull source1a source1b + $ cd source1a + $ hg bookmark bookA + $ echo 1a > foo + $ hg commit -m 1a + $ cd ../source1b + $ hg -q up -r 0 + $ echo head1 > foo + $ hg commit -m head1 + created new head + $ hg bookmark head1 + $ hg -q up -r 0 + $ echo head2 > foo + $ hg commit -m head2 + created new head + $ hg bookmark head2 + $ hg -q up -r 0 + $ hg branch branch1 + marked working directory as branch branch1 + (branches are permanent and global, did you want a bookmark?) + $ echo branch1 > foo + $ hg commit -m branch1 + $ hg -q up -r 0 + $ hg branch branch2 + marked working directory as branch branch2 + $ echo branch2 > foo + $ hg commit -m branch2 + $ cd .. + $ hg init source2 + $ cd source2 + $ echo initial2 > foo + $ hg -q commit -A -m initial2 + $ echo second > foo + $ hg commit -m second + $ cd .. + +Clone with auto share from an empty repo should not result in share + + $ mkdir share + $ hg --config share.pool=share clone empty share-empty + (not using pooled storage: remote appears to be empty) + updating to branch default + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ ls share + $ test -d share-empty/.hg/store + $ test -f share-empty/.hg/sharedpath + [1] + +Clone with auto share from a repo with filtered revision 0 should not result in share + + $ hg --config share.pool=share clone filteredrev0 share-filtered + (not using pooled storage: unable to resolve identity of remote) + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + updating to branch default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + +Clone from repo with content should result in shared store being created + + $ hg --config share.pool=share clone source1a share-dest1a + (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) + requesting all changes + adding changesets + adding manifests + adding file changes + added 3 changesets with 3 changes to 1 files + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + searching for changes + no changes found + adding remote bookmark bookA + +The shared repo should have been created + + $ ls share + b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1 + +The destination should point to it + + $ cat share-dest1a/.hg/sharedpath; echo + $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg + +The destination should have bookmarks + + $ hg -R share-dest1a bookmarks + bookA 2:e5bfe23c0b47 + +The default path should be the remote, not the share + + $ hg -R share-dest1a config paths.default + $TESTTMP/source1a + +Clone with existing share dir should result in pull + share + + $ hg --config share.pool=share clone source1b share-dest1b + (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + searching for changes + adding changesets + adding manifests + adding file changes + added 4 changesets with 4 changes to 1 files (+4 heads) + adding remote bookmark head1 + adding remote bookmark head2 + + $ ls share + b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1 + + $ cat share-dest1b/.hg/sharedpath; echo + $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg + +We only get bookmarks from the remote, not everything in the share + + $ hg -R share-dest1b bookmarks + head1 3:4a8dc1ab4c13 + head2 4:99f71071f117 + +Default path should be source, not share. + + $ hg -R share-dest1b config paths.default + $TESTTMP/source1a + +Clone from unrelated repo should result in new share + + $ hg --config share.pool=share clone source2 share-dest2 + (sharing from new pooled repository 22aeff664783fd44c6d9b435618173c118c3448e) + requesting all changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 1 files + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + searching for changes + no changes found + + $ ls share + 22aeff664783fd44c6d9b435618173c118c3448e + b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1 + +remote naming mode works as advertised + + $ hg --config share.pool=shareremote --config share.poolnaming=remote clone source1a share-remote1a + (sharing from new pooled repository 195bb1fcdb595c14a6c13e0269129ed78f6debde) + requesting all changes + adding changesets + adding manifests + adding file changes + added 3 changesets with 3 changes to 1 files + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + searching for changes + no changes found + adding remote bookmark bookA + + $ ls shareremote + 195bb1fcdb595c14a6c13e0269129ed78f6debde + + $ hg --config share.pool=shareremote --config share.poolnaming=remote clone source1b share-remote1b + (sharing from new pooled repository c0d4f83847ca2a873741feb7048a45085fd47c46) + requesting all changes + adding changesets + adding manifests + adding file changes + added 6 changesets with 6 changes to 1 files (+4 heads) + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + searching for changes + no changes found + adding remote bookmark head1 + adding remote bookmark head2 + + $ ls shareremote + 195bb1fcdb595c14a6c13e0269129ed78f6debde + c0d4f83847ca2a873741feb7048a45085fd47c46 + +request to clone a single revision is respected in sharing mode + + $ hg --config share.pool=sharerevs clone -r 4a8dc1ab4c13 source1b share-1arev + (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 1 files + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + no changes found + adding remote bookmark head1 + + $ hg -R share-1arev log -G + @ changeset: 1:4a8dc1ab4c13 + | bookmark: head1 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: head1 + | + o changeset: 0:b5f04eac9d8f + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: initial + + +making another clone should only pull down requested rev + + $ hg --config share.pool=sharerevs clone -r 99f71071f117 source1b share-1brev + (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + adding remote bookmark head1 + adding remote bookmark head2 + + $ hg -R share-1brev log -G + o changeset: 2:99f71071f117 + | bookmark: head2 + | tag: tip + | parent: 0:b5f04eac9d8f + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: head2 + | + | @ changeset: 1:4a8dc1ab4c13 + |/ bookmark: head1 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: head1 + | + o changeset: 0:b5f04eac9d8f + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: initial + + +Request to clone a single branch is respected in sharing mode + + $ hg --config share.pool=sharebranch clone -b branch1 source1b share-1bbranch1 + (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 1 files + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + no changes found + + $ hg -R share-1bbranch1 log -G + o changeset: 1:5f92a6c1a1b1 + | branch: branch1 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: branch1 + | + @ changeset: 0:b5f04eac9d8f + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: initial + + + $ hg --config share.pool=sharebranch clone -b branch2 source1b share-1bbranch2 + (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) + updating working directory + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + + $ hg -R share-1bbranch2 log -G + o changeset: 2:6bacf4683960 + | branch: branch2 + | tag: tip + | parent: 0:b5f04eac9d8f + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: branch2 + | + | o changeset: 1:5f92a6c1a1b1 + |/ branch: branch1 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: branch1 + | + @ changeset: 0:b5f04eac9d8f + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: initial + + +-U is respected in share clone mode + + $ hg --config share.pool=share clone -U source1a share-1anowc + (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) + searching for changes + no changes found + adding remote bookmark bookA + + $ ls share-1anowc