mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
7061c1092f
Summary: The pushvars extension ensures that it precedes the hooks. Unfortunately, that means pushrebase does not have access to the hook variables unless it obtains the transaction. If it does that, then the prepushrebase step will have the lock, defeating the purpose of the hook. By storing the pushvars in the operation, we can retrieve it without starting the transaction. Test Plan: passes the BYPASS_REVIEW test when it is moved to prepushrebase Reviewers: #sourcecontrol, durham, lcharignon Reviewed By: durham Subscribers: durham, mitrandir Differential Revision: https://phabricator.fb.com/D2890191 Tasks: 9872386 Signature: t1:2890191:1454526611:503a30015494eef467ad545b92077bf42cdd30d5
79 lines
1.9 KiB
Perl
79 lines
1.9 KiB
Perl
Setup
|
|
|
|
$ PYTHONPATH=$TESTDIR/..:$PYTHONPATH
|
|
$ export PYTHONPATH
|
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [ui]
|
|
> ssh = python "$RUNTESTDIR/dummyssh"
|
|
> username = nobody <no.reply@fb.com>
|
|
> [extensions]
|
|
> strip =
|
|
> EOF
|
|
|
|
Setup pushrebase required repo
|
|
|
|
$ hg init server
|
|
$ cd server
|
|
$ cat >> .hg/hgrc <<EOF
|
|
> [extensions]
|
|
> bundle2hooks =
|
|
> pushrebase =
|
|
> [pushrebase]
|
|
> blocknonpushrebase = True
|
|
> EOF
|
|
$ echo a > a && hg commit -Aqm a
|
|
$ cd ..
|
|
|
|
$ hg clone -q server client
|
|
$ cd client
|
|
$ echo b >> a && hg commit -Aqm b
|
|
$ hg book master
|
|
|
|
Non-pushrebase pushes should be rejected
|
|
|
|
$ hg push
|
|
pushing to $TESTTMP/server (glob)
|
|
searching for changes
|
|
error: prechangegroup.blocknonpushrebase hook failed: this repository requires that you push using 'hg push --to'
|
|
abort: this repository requires that you push using 'hg push --to'
|
|
[255]
|
|
|
|
$ hg push -f
|
|
pushing to $TESTTMP/server (glob)
|
|
searching for changes
|
|
error: prechangegroup.blocknonpushrebase hook failed: this repository requires that you push using 'hg push --to'
|
|
abort: this repository requires that you push using 'hg push --to'
|
|
[255]
|
|
|
|
$ hg push -B master
|
|
pushing to $TESTTMP/server (glob)
|
|
searching for changes
|
|
error: prechangegroup.blocknonpushrebase hook failed: this repository requires that you push using 'hg push --to'
|
|
abort: this repository requires that you push using 'hg push --to'
|
|
[255]
|
|
|
|
Pushrebase pushes should be allowed
|
|
|
|
$ hg push --config 'extensions.bundle2hooks=' --config 'extensions.pushrebase=' --to master -B master
|
|
pushing to $TESTTMP/server (glob)
|
|
searching for changes
|
|
pushing 1 commit:
|
|
1846eede8b68 b
|
|
exporting bookmark master
|
|
|
|
Bookmark pushes should not be affected by the block
|
|
|
|
$ hg book -r ".^" master -f
|
|
$ hg push -B master
|
|
pushing to $TESTTMP/server (glob)
|
|
searching for changes
|
|
no changes found
|
|
updating bookmark master
|
|
[1]
|
|
$ hg -R ../server log -T '{rev} {bookmarks}' -G
|
|
o 1
|
|
|
|
|
@ 0 master
|
|
|