sapling/eden/scm/tests/test-fb-hgext-pull-createmarkers.t
Jun Wu ba2d83b3f8 pull: remove "new changesets" message
Summary:
Reverts https://www.mercurial-scm.org/repo/hg/rev/eb586ed5d8ce.

The colon syntax (x:y) is deprecated and is unsupported by segmented changelog.

Reviewed By: DurhamG

Differential Revision: D19394101

fbshipit-source-id: 8c66756f1035ab7660180716a2afa052879f384e
2020-01-14 21:02:27 -08:00

182 lines
5.0 KiB
Perl

#chg-compatible
$ setconfig extensions.treemanifest=!
Setup
Test that hg pull creates obsolescence markers for landed diffs
$ cat >> $HGRCPATH <<EOF
> [ui]
> username = nobody <no.reply@fb.com>
> ssh = python "$RUNTESTDIR/dummyssh"
> [experimental]
> evolution= createmarkers
> rebaseskipobsolete=True
> [extensions]
> amend=
> pullcreatemarkers=
> pushrebase=
> rebase=
> remotenames =
> [remotenames]
> allownonfastforward=True
> EOF
$ hg init server
$ mkcommit() {
> echo "$1" > "$1"
> hg add "$1"
> echo "add $1" > msg
> echo "" >> msg
> url="https://phabricator.fb.com"
> if [ -n "$3" ]; then
> url="$3"
> fi
> [ -z "$2" ] || echo "Differential Revision: $url/D$2" >> msg
> hg ci -l msg
> }
Set up server repository
$ cd server
$ mkcommit initial
$ mkcommit secondcommit
$ hg book master
$ cd ..
Set up clients repository
$ hg clone ssh://user@dummy/server client -q
$ hg clone ssh://user@dummy/server otherclient -q
The first client works on several diffs while the second client lands one of her diff
$ cd otherclient
$ mkcommit b
$ hg push --to master
pushing rev 2e73b79a63d8 to destination ssh://user@dummy/server bookmark master
searching for changes
remote: pushing 1 changeset:
remote: 2e73b79a63d8 add b
updating bookmark master
$ cd ../client
$ mkcommit c 123 # 123 is the phabricator rev number (see function above)
$ mkcommit d 124 "https://phabricator.intern.facebook.com"
$ mkcommit e 131
$ hg log -G -T '{rev} "{desc}" {remotebookmarks}'
@ 4 "add e
|
| Differential Revision: https://phabricator.fb.com/D131"
o 3 "add d
|
| Differential Revision: https://phabricator.intern.facebook.com/D124"
o 2 "add c
|
| Differential Revision: https://phabricator.fb.com/D123"
o 1 "add secondcommit" default/master
|
o 0 "add initial"
$ hg push --to master
pushing rev d5895ab36037 to destination ssh://user@dummy/server bookmark master
searching for changes
remote: pushing 3 changesets:
remote: 1a07332e9fa1 add c
remote: ee96b78ae17d add d
remote: d5895ab36037 add e
remote: 4 new changesets from the server will be downloaded
adding changesets
adding manifests
adding file changes
added 4 changesets with 1 changes to 4 files
3 new obsolescence markers
updating bookmark master
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
obsoleted 3 changesets
Here we strip commits 6, 7, 8 to simulate what happens with landcastle, the
push doesn't directly go to the server
$ hg debugstrip 6
0 files updated, 0 files merged, 3 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/client/.hg/strip-backup/d446b1b2be43-516f7371-backup.hg (glob)
We update to commit 1 to avoid keeping 2, 3, and 4 visible with inhibit
$ hg update 1
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Here pull should mark 2, 3, and 4 as obsolete since they landed as 6, 7, 8 on
the remote
$ hg log -G -T '{rev} "{desc}" {remotebookmarks}'
o 5 "add b"
|
| o 4 "add e
| |
| | Differential Revision: https://phabricator.fb.com/D131"
| o 3 "add d
| |
| | Differential Revision: https://phabricator.intern.facebook.com/D124"
| o 2 "add c
|/
| Differential Revision: https://phabricator.fb.com/D123"
@ 1 "add secondcommit"
|
o 0 "add initial"
$ hg pull
pulling from ssh://user@dummy/server
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 0 changes to 3 files
obsoleted 3 changesets
$ hg log -G -T '{rev} "{desc}" {remotebookmarks}'
o 8 "add e
|
| Differential Revision: https://phabricator.fb.com/D131" default/master
o 7 "add d
|
| Differential Revision: https://phabricator.intern.facebook.com/D124"
o 6 "add c
|
| Differential Revision: https://phabricator.fb.com/D123"
o 5 "add b"
|
@ 1 "add secondcommit"
|
o 0 "add initial"
Rebasing a stack containing landed changesets should only rebase the non-landed
changesets
$ hg up --hidden 4 # --hidden because directaccess works only with hashes
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ mkcommit k 202
$ hg rebase -d default/master
note: not rebasing 1a07332e9fa1 "add c", already in destination as d446b1b2be43 "add c"
note: not rebasing ee96b78ae17d "add d", already in destination as 1f539cc6f364 "add d"
note: not rebasing d5895ab36037 "add e", already in destination as 461a5b25b3dc "add e" (default/master master)
rebasing 7dcd118e395a "add k"
$ echo more >> k
$ hg amend
$ hg unhide 10
$ cd ../server
$ mkcommit k 202
$ cd ../client
$ hg pull
pulling from ssh://user@dummy/server
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 1 files
obsoleted 1 changesets
(Note: pullcreatemarkers created two markers, however only one of them was
counted in the message as the first commit had previously been obsoleted
and revived)