sapling/eden/scm/tests/test-commitcloud-sync-bookmarks.t
Liubov Dmitrieva 9f3609ec51 implement omision of old public bookmarks
Summary:
don't apply an old public bookmark if the commit is older than max_sync_age

there is a complicated logic because we need to make sure if we later run it with different commitcloud.max_sync_age value or hg cloud sync --full the bookmarks will be appear back.

So, the changes required in both:

* checkomission
* _mergebookmarks

but both cases covered in the tests

also, if you run with max_sync_age=1000 and later max_sync_age=0, the bookmarks will not disappear, which is expected.

Reviewed By: markbt

Differential Revision: D28572875

fbshipit-source-id: 317e897a2b81c3371dbea7eb39b8925570c1d40a
2021-05-21 06:31:04 -07:00

169 lines
5.0 KiB
Perl

#chg-compatible
$ enable amend commitcloud infinitepush rebase remotenames treemanifest pullcreatemarkers
$ configure dummyssh
$ setconfig commitcloud.hostname=testhost
$ setconfig remotefilelog.reponame=server
$ hg init server
$ cd server
$ setconfig infinitepush.server=yes infinitepush.reponame=testrepo
$ setconfig infinitepush.indextype=disk infinitepush.storetype=disk
$ setconfig treemanifest.server=True
$ touch base
$ hg commit -Aqm base
$ hg bookmark master
$ hg debugmakepublic .
$ cd ..
$ hg clone ssh://user@dummy/server client1 -q
$ cd client1
$ setconfig commitcloud.servicetype=local commitcloud.servicelocation=$TESTTMP commitcloud.token_enforced=False
$ hg cloud join
commitcloud: this repository is now connected to the 'user/test/default' workspace for the 'server' repo
commitcloud: synchronizing 'server' with 'user/test/default'
commitcloud: commits synchronized
finished in * (glob)
$ echo data > file
$ hg commit -Aqm "draft-commit
> Differential Revision: https://phabricator.fb.com/D1234"
$ hg book foo
$ hg prev -q
[df4f53] base
$ hg cloud sync -q
$ cd ..
$ hg clone ssh://user@dummy/server client2 -q
$ cd client2
$ setconfig commitcloud.servicetype=local commitcloud.servicelocation=$TESTTMP commitcloud.token_enforced=False
$ hg cloud join
commitcloud: this repository is now connected to the 'user/test/default' workspace for the 'server' repo
commitcloud: synchronizing 'server' with 'user/test/default'
pulling 00422fad0026 from ssh://user@dummy/server
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
commitcloud: commits synchronized
finished in * (glob)
$ tglogp
o 00422fad0026 draft 'draft-commit
│ Differential Revision: https://phabricator.fb.com/D1234' foo
@ df4f53cec30a public 'base'
$ cd ..
Fake land the commit
$ cd server
$ echo 1 > serverfile
$ hg commit -Aqm public-commit-1
$ echo data > file
$ hg commit -Aqm "landed-commit
> Differential Revision: https://phabricator.fb.com/D1234"
$ echo 2 > serverfile
$ hg commit -Aqm public-commit-2
$ hg debugmakepublic .
$ cd ..
$ cd client1
$ hg pull
pulling from ssh://user@dummy/server
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 2 changes to 2 files
$ tglogp
o 67d363c9001e public 'public-commit-2'
o 441f69264760 public 'landed-commit
│ Differential Revision: https://phabricator.fb.com/D1234'
o 031d760782fb public 'public-commit-1'
x 00422fad0026 draft 'draft-commit
├─╯ Differential Revision: https://phabricator.fb.com/D1234' foo
@ df4f53cec30a public 'base'
$ hg cloud sync -q
$ cd ../client2
$ hg cloud sync -q
$ tglogp
o 00422fad0026 draft 'draft-commit
│ Differential Revision: https://phabricator.fb.com/D1234' foo
@ df4f53cec30a public 'base'
Rebasing the bookmark will make the draft commit disappear.
$ cd ../client1
$ hg rebase -b foo -d 67d363c9001e1d7227625f0fa5004aca4572d214
note: not rebasing 00422fad0026 "draft-commit" (foo), already in destination as 441f69264760 "landed-commit"
$ tglogp
o 67d363c9001e public 'public-commit-2' foo
o 441f69264760 public 'landed-commit
│ Differential Revision: https://phabricator.fb.com/D1234'
o 031d760782fb public 'public-commit-1'
@ df4f53cec30a public 'base'
$ hg cloud sync
commitcloud: synchronizing 'server' with 'user/test/default'
commitcloud: commits synchronized
finished in * (glob)
$ tglogp
o 67d363c9001e public 'public-commit-2' foo
o 441f69264760 public 'landed-commit
│ Differential Revision: https://phabricator.fb.com/D1234'
o 031d760782fb public 'public-commit-1'
@ df4f53cec30a public 'base'
Sync in client2. This will omit the bookmark because we don't have the landed commit.
$ cd ../client2
$ hg cloud sync -q
67d363c9001e not found, omitting foo bookmark
$ tglogp
@ df4f53cec30a public 'base'
Pull so that we have the public commit and sync again.
$ hg pull
pulling from ssh://user@dummy/server
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 2 changes to 2 files
$ hg cloud sync
commitcloud: synchronizing 'server' with 'user/test/default'
commitcloud: commits synchronized
finished in * (glob)
The draft commit is also gone from here, and the workspace is stable.
$ tglogp
o 67d363c9001e public 'public-commit-2' foo
o 441f69264760 public 'landed-commit
Differential Revision: https://phabricator.fb.com/D1234'
o 031d760782fb public 'public-commit-1'
@ df4f53cec30a public 'base'
$ cd ../client1
$ hg cloud sync -q
$ tglogp
o 67d363c9001e public 'public-commit-2' foo
o 441f69264760 public 'landed-commit
Differential Revision: https://phabricator.fb.com/D1234'
o 031d760782fb public 'public-commit-1'
@ df4f53cec30a public 'base'