[Chapel Merge] Add support for adding arbitrary git repos as maso

Branch: refs/heads/main
Revision: 60a52c8
Author: bmcdonald3
Link: Add support for adding arbitrary git repos as mason dependencies by bmcdonald3 · Pull Request #20261 · chapel-lang/chapel · GitHub
Log Message:

Merge pull request #20261 from bmcdonald3/mason-git

Add support for adding arbitrary git repos as mason dependencies

[ reviewed by @arezaii - thank you! ]

Rust supports a repo = { git = "URL", branch = "BRANCH" } syntax
for using git repos that are rust crates but not stored in the
registry. This PR adds support for the equivalent functionality
in mason.

With this PR, a user can specify a dependency such as:

HelloWorld = { git = "https://github.com/bmcdonald3/HelloWorld", branch = "master" }

and have the hello world master branch incorporated into their
project as a dependency, freeing them of the constraint of needing
to use a mason-versioned state of the project and also using
repos that aren't necessarily in the mason registry.

Still todo:

  1. Add checking of the toml file from the git repo to ensure that
    all the dependencies are met
  2. Add support for specific git revisions, not just branches
  3. Lock in the git revision of the repo when installed and only update
    when mason update is run

Closes: Allow mason to use other fields other than the version · Issue #17818 · chapel-lang/chapel · GitHub

Modified Files:
A test/mason/gitTest.lock

A test/mason/masonGitDeps.chpl
A test/mason/masonGitDeps.good
M doc/rst/tools/mason/mason.rst
M modules/packages/TOML.chpl
M tools/mason/MasonBuild.chpl
M tools/mason/MasonExample.chpl
M tools/mason/MasonTest.chpl
M tools/mason/MasonUpdate.chpl
M tools/mason/MasonUtils.chpl

Compare: https://github.com/chapel-lang/chapel/compare/2b231023583b...60a52c8d1214