Addresses #1, save for the CLI, and resolves #15 by proceeding forward using pygit2 as a backend instead of GitPython
List of Changes
Defines a save-specific specification file: .gsb_manifest
Implements onboard.create_repo to the specification of #1. Explicitly: calling that method will:
Initialize (or re-initialize) a repository in the specified location
Create a configuration with a manifest of the files to be tracked
Add all requested files along with the gsb cruft and create an initial commit in a way that is transparently (via the "committer" field) tied to gsb
Create a unique annotated tag to mark the start of gsb tracking
Additionally:
If there's already a .gsb_manifest in the directory, the method will raise an error
If there's already a Git repo in the directory, this method will onboard it just fine, appending onto the existing history
The user is also able to specify a list of patterns to append to .gitignore
Abstracts away all the calls to pygit2 into a module called _git so that if I decide later to switch to another library, I only have to do it in one place
Tech Debt and Other Concerns
pygit2 is extremely low-level, the documentation is lacking in certain places, and there are definitely some limitations to what I can do / what I can do easily. That being said nothing so far has risen to the level of "tech debt," and I do think it'll be able to handle everything I need it to do. Plus, it's actively maintained!
Validation Performed
[x] Comprehensive unit tests (100% coverage, fwiw)
[x] I've been running a lot of the lower-level _git utilities on some existing repos to tweak their behavior, and I'm confident they're behaving as intended
[x] I have run mkdocs serve locally and ensured that all API docs and
changes I have made to the static pages are rendering correctly, with all links
working
[x] All tech debt concerns have been resolved, documented as issues, or otherwise
accepted
Summary
Addresses #1, save for the CLI, and resolves #15 by proceeding forward using
pygit2
as a backend instead ofGitPython
List of Changes
.gsb_manifest
onboard.create_repo
to the specification of #1. Explicitly: calling that method will:gsb
gsb
tracking.gsb_manifest
in the directory, the method will raise an error.gitignore
pygit2
into a module called_git
so that if I decide later to switch to another library, I only have to do it in one placeTech Debt and Other Concerns
pygit2
is extremely low-level, the documentation is lacking in certain places, and there are definitely some limitations to what I can do / what I can do easily. That being said nothing so far has risen to the level of "tech debt," and I do think it'll be able to handle everything I need it to do. Plus, it's actively maintained!Validation Performed
_git
utilities on some existing repos to tweak their behavior, and I'm confident they're behaving as intendedPR Type
release
)Checklist:
mkdocs serve
locally and ensured that all API docs and changes I have made to the static pages are rendering correctly, with all links working