Consolidate binary (hg, git, svn) analysis code into one place

Authored by epriestley on Jul 31 2017, 6:24 PM.

Description

Consolidate binary (hg, git, svn) analysis code into one place

Summary:
Ref T12942. Currently, we have a bunch of code spread out all over the place for doing version tests on hg, svn, and git.

Consolidate this code a bit so we can use it to drive a new section on the "Version Information" page showing the installed versions (and paths) for binaries.

The primary goal is to reduce the support burden a little bit. Two particular issues are:

  • Various stuff with old (or new) VCS binaries, mostly Mercurial.
  • Cases where the webserver sees a different binary than sudoers specifies.

These should be easier to spot with binaries in the version info.

Test Plan:
Added unit tests, see also next change. Eventual result is this:

Reviewers: chad, avivey

Reviewed By: chad, avivey

Subscribers: avivey

Maniphest Tasks: T12942

Differential Revision: https://secure.phabricator.com/D18305