Summary:
Remove the need to ommit the rREPO prefix when copy pasting from phabricator and
looking up a commit.
Test Plan:
Ran the following in phabricator enabled HG repos
11/13 12:15 cdelahousse@dev4253 ~/fbsource/fbcode
$ hg log -r rFBS27aa00fb74d9a3b82756dad6ff26fe253f1e9a70 --config extensions.fbconduit=~/local/fb-hgext/fbconduit.py
changeset: 992495:27aa00fb74d9
user: Peng Li <pengli@fb.com>
date: Tue Nov 03 10:29:01 2015 -0800
summary: Add a simple root dir arc library
11/13 12:21 cdelahousse@dev4253 ~/fbjava
$ hg log -r rFBA8f1335e6d588 --config extensions.fbconduit=~/local/fb-hgext/fbconduit.py
changeset: 18654:8f1335e6d588
user: Ryan Menezes <ryandm@fb.com>
date: Thu Oct 22 09:59:27 2015 -0700
summary: move jenkins hook into fbjava/arcanist (fbjava changes)
Tried the same on a repo with a git mirror that exists in phabricator:
11/16 11:40 cdelahousse@dev4253 ~/fbsource/fbcode
$ hg log -r rFBCODE8272d25d65869ce059024ff38c7051388ad7b802 --config extensions.fbconduit=~/local/fb-hgext/fbconduit.py
changeset: 1027287:f26a9c32ae08
user: Oleksandr Kuvshynov <oleksandr@fb.com>
date: Sun Nov 15 19:16:39 2015 -0800
summary: [mf] simple cleanup of feed story view
If a git hash is too small, abort:
$ hg log -r rFBCODE8272d25d65869ce059024f --config extensions.fbconduit=~/local/fb-hgext/fbconduit.py
abort: git hash must be 40 characters
The previous commands depends on a list of repos set in my hgrc. See (D2660070)
[fbconduit]
gitcallsigns=LK, CFPUMA, CFSV, CFGK, CFMF, CFGMON, CF, RSIGMA, FA,·
WAWEBCLIENT, SKY, FBCODE, FBOBJC, WAWP, SV, OVRMOBILEMAIN, WAANDROID, IGSRV,
CPE, MSS, ANDROIDSDK, BUCK, IT-CHEF, WABB, ITINFRA, SIGMA, IOSSDK
Reviewers: #sourcecontrol, durham, ericsumner
Reviewed By: durham, ericsumner
Subscribers: rmcelroy, ericsumner
Differential Revision: https://phabricator.fb.com/D2653497
Tasks: 8361368
Signature: t1:2653497:1447480768:295079a7793e182ddea3aeece9cfaead1bfc1a57
Summary:
replacements for the newly-picked node were not present in the
histedit state before successfully continuing which made --abort
unaware of them.
This isn't clean solution. But the stop command (with node) will cease to
exist in near future (it will be replaced by the normal pick and just "stop"
in following line for which we will have better solution). This should suffice
until then.
Test Plan:
test attached
tested manually too
Reviewers: #sourcecontrol, rmcelroy
Reviewed By: rmcelroy
Differential Revision: https://phabricator.fb.com/D2661831
Tasks: 9111207
Signature: t1:2661831:1447790670:a26ee58cacb77e6cf675a1e99d2eadcbffb684d9
Summary: Instead of retrieving moves one by one during copytracing, retrieves all the moves from the ctxstack at a time
Test Plan: The former tests still work
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2661088
Tasks: 8660367
Summary: The regular expression was matching hg hashes that started with a digit.
Test Plan:
Ran it in different repoes:
This should fail (fbcode)
11/13 11:15 cdelahousse@dev4253 ~/fbsource/fbcode
$ hg up rFBCODE8a781801149 --config extensions.fbconduit=~/local/fb-hgext/fbconduit.py
abort: unknown revision 'rFBCODE8a781801149'!
These should succeed (WWW and opsfiles)
11/13 11:16 cdelahousse@dev4253 ~/www
$ hg log -r rE1502460 --config
extensions.fbconduit=~/local/fb-hgext/fbconduit.py
changeset: 808001:34d7f02c58d6
user: cdelahousse@2c7ba8d8-a2f7-0310-a573-de162e16dcc7
date: Thu Nov 20 04:45:21 2014 +0000
summary: CRMEmailHarvester Script runner for raw email processor
11/13 11:29 cdelahousse@dev4253 ~/opsfiles
$ hg log -r rO766855 --config
extensions.fbconduit=~/local/fb-hgext/fbconduit.py
changeset: 758197:db438a952785
user: twsvcscm@914ed892-1039-11dd-9db8-c56a9f3689f4
date: Sat Oct 31 01:13:33 2015 +0000
summary: [Storage] netgroup_gen AUTOCOMMIT
Reviewers: #sourcecontrol, rmcelroy
Subscribers: cdown
Differential Revision: https://phabricator.fb.com/D2653121
Tasks: 9071883
The no-date-rewrite-on-rebase test had output that assumed date rewriting. It
should be outputting the first commit which has a recent date (commit 7) instead
of the current commit (commit 12) which did not have it's date rewritten.
Summary:
There was a bug where if you had a sparse profile and updated across revs that
both A) add file X to the sparse profile, and B) changed the permissions on file
X (ex: to make it executable), the update would fail.
This was caused by the edit permission action being present in the action list
as an 'edit' action, so the profile changing code did not add the 'get' action
that would actually put it on disk.
The fixes is to just add the 'get' action for every file that wasn't previously
in the profile (overwriting any action that had already been computed).
Test Plan: Added a test, and verified it against the reported repro case
Reviewers: #sourcecontrol
Differential Revision: https://phabricator.fb.com/D2652793
Summary: the move data concerning the ctx is pushed to the remote sqlite database at the same time as hg push
Test Plan: testing a push between a client and server repo
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2643067
Tasks: 8660367
Summary: If some contexts are not present in the local database during a retrieve, a request is send to the server for those moves one time through a 'pull(revs)' call. When doing a rebase, a check is performed beforehand to see if the local database contains the contexts of the rebased-to branch.
Test Plan: Rebasing in the middle of a branch for which the moves are not known
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2634365
Tasks: 8660367
Summary: Changed the format under which the move dictionaries are sent by bundle2 and sorted the sql test results so that it is constant
Test Plan: The former tests (fill-db.t, copytrace.t and bundle2.t) still pass
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2634262
Tasks: 8660367
Summary:
Previously rebase retained the commit date from the original. Now it uses current time.
Added config option 'tweakdefaults.rebasekeepdate' to save original date in graft.
Test Plan: ./run-tests.py test-tweakdefaults.t
Reviewers: rmcelroy
Reviewed By: rmcelroy
Differential Revision: https://phabricator.fb.com/D2646736
Tasks: 8770194
Signature: t1:2646736:1447368541:e9735f75b394a25b72d1a5cc4cd26454c2231c91
Summary:
If tracking was set up, 'hg push' was not invoking the pushrebase logic, like it
would if the user ran 'hg push --to master'.
This is required for us to unify all pushes through pushrebase, so we can move
the hooks out of the lock and into prepushrebase.
Test Plan: Added a test
Reviewers: #sourcecontrol
Differential Revision: https://phabricator.fb.com/D2635253
Summary:
Removes the need strip the capital letters from an SVN revision when accessing a revision
rE1502460 -> r1502460
Test Plan:
Manually in opsfiles hg and dubdubdub
In opsfiles:
hg show rO766855
In dub dub dub
hg log -r rE1502460
Reviewers: durham, #sourcecontrol, ericsumner, rmcelroy
Subscribers: ericsumner, rmcelroy
Differential Revision: https://phabricator.fb.com/D2603749
Tasks: 8361368
Summary: the _interestingfiles function was blocking the commits
Test Plan: the test still work and commits works in my fbsource repo without unreasonable additional time
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2628371
Tasks: 8501037
Summary:
Requiring that developers use the run-tests from the core hg repo has
some downsides:
1) It forces the tests to run against whatever version of Mercurial I have
checked out right now. I usually want to run tests against my installed
Mercurial (since we're likely to deploy a new fb-hgext without a new hg).
2) It makes it harder for people to contribute. Someone wrote a new extension,
and in order for them to test it, I have to explain how to checkout hg and how
to run tests using the hg run-tests and first they must checkout the rev we
have deployed, not @.
Test Plan: Ran the tests
Reviewers: pyd, cdelahousse, #sourcecontrol
Subscribers: ps
Differential Revision: https://phabricator.fb.com/D2632574
Summary:
The branch cache is used to store a cache of each branches heads. If your
Mercurial repo doesn't have any branches though, this can be slow.
This tweak allows simplifying the branchcache computation to just say every head
in the repo belongs to the 'default' branch. This shaves 600ms off of some
commit commands.
I tested it by running the entire Mercurial test suite with it enabled, and
scanning the failures to make sure they were only related to repos that had
non-default branches.
Test Plan:
$ cd ~/hg/tests
$ ./run-tests.py -S -j 48 --extra-config-opt=perftweaks.disablebranchcache=True --extra-config-opt=extensions.perftweaks=/data/users/durham/fb-hgext/perftweaks.py
Reviewers: #sourcecontrol, rmcelroy
Reviewed By: rmcelroy
Subscribers: rmcelroy
Differential Revision: https://phabricator.fb.com/D2630360
Signature: t1:2630360:1447092762:adab0456ff842cf508b7f46e988ef9d865fa3988
Summary: put **kwargs in the arguments to avoid iddues with the 'keepbranches' argument
Test Plan: run the tests again
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2617832
Tasks: 8659945
Summary: Uses the local sqlite database to check for moves during the rebase - Wraps and copies the mergecopies function
Test Plan: Tests the different cases: renamed/renamed renamed/modified renamed/deleted deleted/renamed modified/renamed
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2552629
Tasks: 8659945
Summary:
This adds an extension that allows configuring the repository such that any
commit that touches a file in directory foo/ will also have the change applied
to directory bar/. It will also block commits if they try to make divergent
changes to mirrored directories.
Test Plan: Added a test suite
Reviewers: #sourcecontrol
Subscribers: chip, aponomarenko
Differential Revision: https://phabricator.fb.com/D2602592
Summary:
Previously we did force pushes by passing a force argument to the server and
having the server ignore the onto arg. This was annoying because it meant we had
to stage our deploy (server must be able to handle the arg before we could allow
clients to send it).
The new behavior uses the existing onto arg and passes a marker to indicate that
no rebase should happen. Old pushrebase servers will handle this correctly,
since a failure to find a node is already treated as "don't try to rebase".
Test Plan:
Tested force push and non force push between old servers and new
clients, and new servers and old clients, and new servers and new clients.
Reviewers: #sourcecontrol
Differential Revision: https://phabricator.fb.com/D2598108
Summary:
When we take the lock, the old repo may become invalidated, so we need to
recreate the bundle repo. Otherwise it's possible that the master commit is not
present in the bundle repo.
Test Plan:
Ran the tests, but I'm not sure how to test this without having push
contention.
Reviewers: #sourcecontrol
Differential Revision: https://phabricator.fb.com/D2597823
Summary:
The previous implementation relied on the python serialization of lists. This
resulted in some truncation due to line length in some infrastructure.
This patch makes it prettier.
Test Plan: Tests
Reviewers: #sourcecontrol, mitrandir
Reviewed By: mitrandir
Subscribers: mitrandir
Differential Revision: https://phabricator.fb.com/D2594066
Signature: t1:2594066:1446079418:cd27cea1f44a9d432984b8dc37b547450ff076ab
Summary:
Previously the output just said "searching for changes" then "updating
bookmark", which was kind of terse. It also showed the "adding XX changesets"
output without any context, which is kind of scary to see "adding 100
changesets" when I'm only pushing one commit.
Now we mention how many commits we're pushing, what the hash range is, and how
many commits are being downloaded.
Test Plan: Ran ze tests
Reviewers: #sourcecontrol, mitrandir
Reviewed By: mitrandir
Subscribers: mitrandir
Differential Revision: https://phabricator.fb.com/D2594007
Signature: t1:2594007:1446081446:99b77f4982acafc1f1940ba07b094a27dd05e354
Summary:
This adds an option for blocking non-pushrebase pushes. This is important
because it allows us to force every push through the pushrebase logic and
therefore allows us to put all the hooks in the prepushrebase hook (so people
can't avoid those hooks).
This is important for performance, since running the hooks in prepushrebase
allows us to run them while outside the lock.
Test Plan: Added a test
Reviewers: #sourcecontrol, rmcelroy
Reviewed By: rmcelroy
Subscribers: rmcelroy
Differential Revision: https://phabricator.fb.com/D2593512
Signature: t1:2593512:1446076882:9f5ee5d8bccd884f34c8284fbacb7d6f8e96f62f
Summary:
Since pushrebase allows running hooks outside of the lock, we want to force all
pushes to go through pushrebase. Step #1 of that is making push --force go
through the pushrebase flow.
The initial version is pretty naive. A future version might avoid the whole
graft process for performance sake.
Test Plan:
Added a test that creates a new bookmark. I also tested the same test
doing a force push.
Reviewers: #sourcecontrol, rmcelroy
Reviewed By: rmcelroy
Subscribers: rmcelroy
Differential Revision: https://phabricator.fb.com/D2588894
Signature: t1:2588894:1446076583:12b58048742b112a5d7cab839204c6219414f9ee
Summary:
Core hg now has support for writing bundle2 bundles. Those bundles are not
readable by older versions of Mercurial though, so we need to first deploy a
mercurial that can read the new, but writes the old, then later we will begin
writing the new as well.
Test Plan:
Created a bundle with my local machine that had the latest hg, and
handed it to a piece of infrastructure that unbundled it using the old hg.
Reviewers: #sourcecontrol, rmcelroy, sid0
Reviewed By: rmcelroy, sid0
Subscribers: rmcelroy
Differential Revision: https://phabricator.fb.com/D2587398
Signature: t1:2587398:1446027602:f711941d49ed8b1b40330c4a6bc21949b3461c10
Summary:
The extra check for clean merge vs conflicted merge isn't needed. They both have
two parents
Test Plan: Ran the tests.
Reviewers: rmcelroy, #sourcecontrol, durham
Reviewed By: durham
Subscribers: michalburger1
Differential Revision: https://phabricator.fb.com/D2587459
Tasks: 8867673
Signature: t1:2587459:1445982486:0b7515558e2d57d4f0a949641b846036f82ec1e0
Summary:
Fbamend broke logfile. fbamend tends to write state to opts['message'] even
if -m or --message was not used at the cmdline. If you inputted a logfile
cmd arg, cmdutil.logmessage would see both opts['message'] and opts['logfile']
as populated and throw an abort exception. This is a workaround.
Test Plan: See test.
Reviewers: rmcelroy
Differential Revision: https://phabricator.fb.com/D2586779
Tasks: 7434543
Summary:
Previously commit --amend and amend retained the commit date from the original. Now it uses current time.
Added config option 'tweakdefaults.amendkeepdate' to save original date in graft.
Test Plan:
1) ./run-tests.py test-tweakdefaults.t
2) Add the following to ~/.hgrc
[extensions]
tweakdefaults = PATH_TO_tweakdefaults.py
fbamend = PATH_TO_fbamend.py
Create repo
hg init
Make a commit with date 0
echo 1 >> test.txt && hg add test.txt && hg commit -d "0 0" -m "initial commit"
Amend a commit via "amend" command and check the date.
echo 1 >> test.txt && hg amend && hg log -l 1
Do the same for "commit --amend" command
3) Add the following to ~/.hgrc
[tweakdefaults]
amendkeepdate = True
and repeat actions from step 2) (both for "commit --amend" and "amend"). Date should stay the same.
Reviewers: rmcelroy, #sourcecontrol, durham
Reviewed By: durham
Subscribers: durham, balazsbalazs
Differential Revision: https://phabricator.fb.com/D2570763
Tasks: 8770194
Signature: t1:2570763:1445539148:66b8b00ed51d486d39203dad830f4a50cdc8060d
Summary:
When there is no method in the module 'AttributeError' is raised (at least on python 2.6.6)
Leave them both
Test Plan:
run-tests.py test-tweakdefaults.py
Reviewers: rmcelroy, durham, prologic
Reviewed By: durham, prologic
Subscribers: balazsbalazs
Differential Revision: https://phabricator.fb.com/D2572948
Signature: t1:2572948:1445564850:59bc6f030661f51b40965ec34d396a39d6e3f9ac
Summary: Because working in a virtualenv w/ setuptools makes things a little easier :)
Test Plan: workon hg && python setup.py develop
Reviewers: rmcelroy, durham
Reviewed By: durham
Differential Revision: https://phabricator.fb.com/D2570341
Signature: t1:2570341:1445542319:0f30cb4aefb7c59753decda4535ca335a4f423cc