Welcome
Welcome to JadeGit, an open-source extension for the Jade Platform which provides source control capabilities for teams wanting to use Git repositories, possibly as part of implementing a modern DevOps workflow with a CI/CD pipeline.
Architecture
JadeGit introduces the Git version control ecosystem to the Jade development environment, where application source code is stored in the database rather than in files.
To bridge these ecosystems, schema entities are extracted using a file format suitable for version control, while Git operations are coordinated with updates to application source in the database, which is treated as the working directory.
JadeGit uses libgit2 to interact with Git repositories. It provides an ODB backend interface, which JadeGit implements to store Git objects in the Jade database (within JadeGitSchema). This approach ensures consistency when treating the database as the working directory, leveraging atomic database transactions to robustly extract and stage changes, ensuring repository state is kept in sync with schema changes during development.
Remote Repositories
Using libgit2, JadeGit is able to push and fetch changes from remote repositories, which exist outside the Jade ecosystem. These act as a central source of truth, enabling collaboration between multiple developers and teams. Fetch operations update the repository data, while integration of those changes into the local database occurs only through branch operations, such as switching or merging, maintaining controlled and consistent updates to schema entities.
Deploying Changes
The JadeGit CLI provides a build command that prepares deployment files by analysing the differences between the prior and target version to be applied to a database. A standalone variant of the CLI can be used during a DevOps CI/CD pipeline, operating against a standard Git repository independently of a Jade database. Once built, the resulting deployment can be run against the target database to apply the changes, either manually or as part of an automated deployment pipeline.
Last updated