mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
49ac0401b7
Summary: An earlier change (D21394302) made discovery sampling use the most recent commits. This ended up not being correct since if the requested sample did not find any hits then the unknown set would not be reduced and the next requested set would not change, resulting in an infinite loop. The goal of the original diff was to ensure master was in the initial sample set so we didn't have to inspect a bunch of really old commits. Let's go back to random sampling, but manually insert master into the initial set. In the long-term we should throw away all this code and use something similar to discovery.fastdiscovery instead which just relies on the public heads. Reviewed By: quark-zju Differential Revision: D21577331 fbshipit-source-id: d738de255e292fc569eb27f250dcd3eaafaaae43
261 lines
6.0 KiB
Perl
261 lines
6.0 KiB
Perl
#chg-compatible
|
|
|
|
$ disable treemanifest
|
|
Test basic functionality of url#rev syntax
|
|
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ echo a > a
|
|
$ hg ci -qAm 'add a'
|
|
$ echo >> a
|
|
$ hg ci -m 'change a'
|
|
$ hg bookmark foo
|
|
$ cd ..
|
|
|
|
$ hg clone 'repo#foo' clone
|
|
updating to branch default
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg --cwd clone heads
|
|
changeset: 1:17d330177ee9
|
|
bookmark: foo
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: change a
|
|
|
|
$ hg --cwd clone parents
|
|
changeset: 1:17d330177ee9
|
|
bookmark: foo
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: change a
|
|
|
|
$ cat clone/.hg/hgrc
|
|
# example repository config (see 'hg help config' for more info)
|
|
[paths]
|
|
default = $TESTTMP/repo#foo
|
|
|
|
# path aliases to other clones of this repo in URLs or filesystem paths
|
|
# (see 'hg help config.paths' for more info)
|
|
#
|
|
# default:pushurl = ssh://jdoe@example.net/hg/jdoes-fork
|
|
# my-fork = ssh://jdoe@example.net/hg/jdoes-fork
|
|
# my-clone = /home/jdoe/jdoes-clone
|
|
|
|
[ui]
|
|
# name and email (local to this repository, optional), e.g.
|
|
# username = Jane Doe <jdoe@example.com>
|
|
|
|
Changing original repo:
|
|
|
|
$ cd repo
|
|
|
|
$ echo >> a
|
|
$ hg ci -m 'new head of branch foo'
|
|
|
|
$ hg up -qC default
|
|
$ echo bar > bar
|
|
$ hg ci -qAm 'add bar'
|
|
|
|
$ hg log
|
|
changeset: 3:ad4513930219
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: add bar
|
|
|
|
changeset: 2:7d4251d04d20
|
|
bookmark: foo
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: new head of branch foo
|
|
|
|
changeset: 1:17d330177ee9
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: change a
|
|
|
|
changeset: 0:1f0dee641bb7
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: add a
|
|
|
|
$ hg -q outgoing '../clone'
|
|
2:7d4251d04d20
|
|
3:ad4513930219
|
|
$ hg summary --remote --config paths.default='../clone'
|
|
parent: 3:ad4513930219
|
|
add bar
|
|
commit: (clean)
|
|
phases: 4 draft
|
|
remote: 2 outgoing
|
|
$ hg -q outgoing '../clone#foo'
|
|
2:7d4251d04d20
|
|
$ hg summary --remote --config paths.default='../clone#foo'
|
|
parent: 3:ad4513930219
|
|
add bar
|
|
commit: (clean)
|
|
phases: 4 draft
|
|
remote: 1 outgoing
|
|
|
|
$ hg -q --cwd ../clone incoming '../repo#foo'
|
|
2:7d4251d04d20
|
|
$ hg --cwd ../clone summary --remote --config paths.default='../repo#foo'
|
|
parent: 1:17d330177ee9
|
|
change a
|
|
bookmarks: foo
|
|
commit: (clean)
|
|
remote: 1 or more incoming
|
|
|
|
$ hg -q push '../clone#foo'
|
|
|
|
$ hg --cwd ../clone heads
|
|
changeset: 2:7d4251d04d20
|
|
bookmark: foo
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: new head of branch foo
|
|
|
|
$ hg -q --cwd ../clone incoming '../repo#foo'
|
|
$ hg --cwd ../clone summary --remote --config paths.default='../repo#foo'
|
|
parent: 1:17d330177ee9
|
|
change a
|
|
commit: (clean)
|
|
remote: (synced)
|
|
|
|
$ cd ..
|
|
|
|
$ cd clone
|
|
$ hg rollback
|
|
repository tip rolled back to revision 1 (undo push)
|
|
|
|
$ hg -q incoming
|
|
unknown reference in .hg/bookmarks: foo 7d4251d04d20dbc31ba80930dc39d0db4550506b
|
|
2:7d4251d04d20
|
|
|
|
$ hg -q pull
|
|
unknown reference in .hg/bookmarks: foo 7d4251d04d20dbc31ba80930dc39d0db4550506b
|
|
|
|
$ hg heads
|
|
changeset: 2:7d4251d04d20
|
|
bookmark: foo
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: new head of branch foo
|
|
|
|
Pull should not have updated:
|
|
|
|
$ hg parents -q
|
|
1:17d330177ee9
|
|
|
|
Going back to the default branch:
|
|
|
|
$ hg up -C 0
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg parents
|
|
changeset: 0:1f0dee641bb7
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: add a
|
|
|
|
No new revs, no update:
|
|
|
|
$ hg pull -qu
|
|
|
|
$ hg parents -q
|
|
0:1f0dee641bb7
|
|
|
|
$ hg debugstrip 1 --no-backup
|
|
|
|
$ hg parents -q
|
|
0:1f0dee641bb7
|
|
|
|
Pull -u takes us back to branch foo:
|
|
|
|
$ hg pull -qu
|
|
|
|
$ hg parents
|
|
changeset: 2:7d4251d04d20
|
|
bookmark: foo
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: new head of branch foo
|
|
|
|
$ hg debugstrip 2 --no-backup
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg up -C 0
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark foo)
|
|
|
|
$ hg parents -q
|
|
0:1f0dee641bb7
|
|
|
|
$ hg heads -q
|
|
1:17d330177ee9
|
|
|
|
$ hg pull -qur default default
|
|
|
|
$ hg parents
|
|
changeset: 3:ad4513930219
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: add bar
|
|
|
|
$ hg heads
|
|
changeset: 3:ad4513930219
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: add bar
|
|
|
|
Test handling of invalid urls
|
|
|
|
$ hg id http://foo/?bar
|
|
abort: unsupported URL component: "bar"
|
|
[255]
|
|
|
|
$ cd ..
|
|
|
|
Test handling common incoming revisions between "default" and
|
|
"default-push"
|
|
|
|
$ hg -R clone rollback
|
|
repository tip rolled back to revision 1 (undo pull)
|
|
working directory now based on revision 0
|
|
|
|
$ cd repo
|
|
|
|
$ hg update -q -C default
|
|
$ echo modified >> bar
|
|
$ hg commit -m "new head to push current default head"
|
|
$ hg -q push -r ".^1" '../clone'
|
|
unknown reference in .hg/bookmarks: foo 7d4251d04d20dbc31ba80930dc39d0db4550506b
|
|
|
|
$ hg -q outgoing '../clone'
|
|
4:44b4e0c07491
|
|
|
|
$ hg summary --remote --config paths.default='../clone#foo' --config paths.default-push='../clone'
|
|
parent: 4:44b4e0c07491
|
|
new head to push current default head
|
|
commit: (clean)
|
|
phases: 1 draft
|
|
remote: 1 outgoing
|
|
|
|
$ hg summary --remote --config paths.default='../clone' --config paths.default-push='../clone#foo'
|
|
parent: 4:44b4e0c07491
|
|
new head to push current default head
|
|
commit: (clean)
|
|
phases: 1 draft
|
|
remote: (synced)
|
|
|
|
$ cd ..
|
|
|
|
Test url#rev syntax of local destination path, which should be taken as
|
|
a 'url#rev' path
|
|
|
|
$ hg clone repo '#foo'
|
|
updating to branch default
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg root -R '#foo'
|
|
$TESTTMP/#foo
|