Conditionally use hg files vs. hg locate depending on version of Mercurial
Summary:
In Mercurial 3.2 the locate command was deprecated in favor of files command. This change updates the DiffusionLowLevelMercurialPathsQuery command to conditionally use locate or files based on the version of Mercurial used.
Closes T7375
Test Plan:
My test/develop Phabricator instance is setup to run Mercurial 3.5.1.
The test procedure to verify valid file listings are being returned:
- I navigated to http://192.168.0.133/conduit/method/diffusion.querypaths/
- I populated the following fields:
- path: "/"
- commit: "d721d5b57fc9ef72e47ff9d4e0c583d74a46590c"
- callsign: "HGTEST"
- I submitted request and verified that result contained all files in the repository:
{ "0": "README", "1": "alpha/beta/trifle", "2": "test/Chupacabra.cow", "3": "test/socket.ks" }
I repeated the above steps after setting up Mercurial 2.6.2, which I installed in the following manner:
- I downloaded Mercurial 2.6.2 source and run make local which will only compile it to work from its own directory (/opt/mercurial-2.6.2)
- I linked /usr/local/bin/hg -> /opt/mercurial-2.6.2/hg (there's also a /usr/bin/hg which is a link to /usr/local/bin/hg)
- I navigated to my home directory and verify that hg --version returns 2.6.2.
- I restarted phabricator services (probably unnecessary).
With the Multimeter application active
- I verified that /usr/local/bin/hg referred to version 2.6
- I ran the same conduit call from the conduit application
- I verified that http://192.168.0.133/multimeter/?type=2&group=label incremented values for bin.hg locate.
- I swapped out mercurial versions for 3.5.1
- I ran the same conduit call from the conduit application
- I verified that http://192.168.0.133/multimeter/?type=2&group=label incremented values for bin.hg files
Reviewers: epriestley, Blessed Reviewers
Reviewed By: epriestley, Blessed Reviewers
Subscribers: Korvin
Maniphest Tasks: T7375
Differential Revision: https://secure.phabricator.com/D14253