Minimalist Git & Github support via CLI
Overview
This PR adds extremely basic + minimalist functionality to initialize and optionally upload a git repository to a public or private GitHub using the git and gh command line tools in a hook. If these tools are not found, the user is informed that they need to be downloaded for this feature to work.

I've read discussion #380 and while this PR is for Git/GitHub (since I used those tools), this could be extended to other version control systems or repository hosts. The need for the external CLI dependencies could be made internal by using some existing PyPi package included in the CCDS distribution.
Tests
- Added tests for
git (local)which simply checks whether the expected files/directories exist. - Set
noneandgit (local)to be included in the test suite by default. - NO TESTS for
git (github public)orgit (github private). However these have been tested manually. - These tests pass on my machine (MacOS) but when I ran the github actions on my fork, some were detecting or not detecting various git files or directories which may be a result of whichever version of git github actions is using. This will have to be debugged before merged but as a university student I don't have the time for this atm.
Misc
- Updated
tests/test_creationto use sets instead of lists. This keeps the syntax simple yet allows easily ignoring files by subtracting the ignored files selected via glob from the existing files. This is helpful for git tracking which uses hashes for dirs/file names - Added a few pytest options to
pyproject.tomlto get it to play better with VSCode's built-in testing ui.
I'd be in favor of initializing a local Git repository, whether it's an option or the default option. IMO the discussion in #380 is outdated now, and in 2025, Git is de facto the one standard VCS software.
I'm not as keen on the options to push to GitHub. Writing to an external system automatically at the end of creating a stub project feels heavy-handed.