mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
4cfb665650
Summary: Before this change `hg pullbackup` did not set correct markers on commits. This change make possible to see what changes already landed even when we are restoring repository from backup. Before the change `fbclone` + `hg pullbackup` of repo with `C1` commit landed would result in: ``` o o C2 | | o o C1 | / | o ``` after: ``` o o C2 | | o x C1 | / | o ``` Reviewed By: StanislavGlebik Differential Revision: D7032572 fbshipit-source-id: ffee3c7cc23c24a3df9a89c999c9dd2de226dbff
129 lines
3.6 KiB
Perl
129 lines
3.6 KiB
Perl
Setup
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [extensions]
|
|
> arcconfig=$TESTDIR/../hgext/extlib/phabricator/arcconfig.py
|
|
> phabstatus=
|
|
> smartlog=
|
|
> EOF
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ touch foo
|
|
$ hg ci -qAm 'Differential Revision: https://phabricator.fb.com/D1'
|
|
|
|
With an invalid arc configuration
|
|
|
|
$ hg log -T '{syncstatus}\n' -r .
|
|
arcconfig configuration problem. No diff information can be provided.
|
|
Error info: no .arcconfig found
|
|
Error
|
|
|
|
Configure arc...
|
|
|
|
$ echo '{}' > .arcrc
|
|
$ echo '{"config" : {"default" : "https://a.com/api"}, "hosts" : {"https://a.com/api/" : { "user" : "testuser", "cert" : "garbage_cert"}}}' > .arcconfig
|
|
|
|
And now with bad responses:
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{syncstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: Unexpected graphql response format
|
|
Error
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"errors": [{"message": "failed, yo"}]}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{syncstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: failed, yo
|
|
Error
|
|
|
|
Missing status field is treated as an error
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [{
|
|
> "number": 1,
|
|
> "latest_active_diff": {
|
|
> "local_commit_info": {
|
|
> "nodes": [
|
|
> {"property_value": "{\"lolwut\": {\"time\": 0, \"commit\": \"lolwut\"}}"}
|
|
> ]
|
|
> }
|
|
> },
|
|
> "differential_diffs": {"count": 3},
|
|
> "created_time": 123,
|
|
> "updated_time": 222
|
|
> }]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{syncstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: Unexpected graphql response format
|
|
Error
|
|
|
|
Missing count field is treated as an error
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [{
|
|
> "number": 1,
|
|
> "diff_status_name": "Approved",
|
|
> "latest_active_diff": {
|
|
> "local_commit_info": {
|
|
> "nodes": [
|
|
> {"property_value": "{\"lolwut\": {\"time\": 0, \"commit\": \"lolwut\"}}"}
|
|
> ]
|
|
> }
|
|
> },
|
|
> "created_time": 123,
|
|
> "updated_time": 222
|
|
> }]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{syncstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: Unexpected graphql response format
|
|
Error
|
|
|
|
Missing hash field is treated as unsync
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [{
|
|
> "number": 1,
|
|
> "diff_status_name": "Approved",
|
|
> "latest_active_diff": {
|
|
> "local_commit_info": {
|
|
> "nodes": [
|
|
> {"property_value": "{\"lolwut\": {\"time\": 0}}"}
|
|
> ]
|
|
> }
|
|
> },
|
|
> "differential_diffs": {"count": 3},
|
|
> "created_time": 123,
|
|
> "updated_time": 222
|
|
> }]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{syncstatus}\n' -r .
|
|
unsync
|
|
|
|
And finally, the success case
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [{
|
|
> "number": 1,
|
|
> "diff_status_name": "Committed",
|
|
> "latest_active_diff": {
|
|
> "local_commit_info": {
|
|
> "nodes": [
|
|
> {"property_value": "{\"lolwut\": {\"time\": 0, \"commit\": \"lolwut\"}}"}
|
|
> ]
|
|
> }
|
|
> },
|
|
> "differential_diffs": {"count": 3},
|
|
> "created_time": 123,
|
|
> "updated_time": 222
|
|
> }]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{syncstatus}\n' -r .
|
|
committed
|