Git Sync is a Plugin for Grav CMS that allows to seamlessly synchronize a Git repository with your Grav site, and vice-versa.
Git Sync captures any change that you make on your site and instantly updates your git repository. In the same way, Git Sync supports webhooks, allowing to automatically synchronize your site if the repository changes.
Thanks to this powerful bi-directional flow, Git Sync can now turn your site into a collaborative environment where the source of truth is always your git repository and unlimited collaborators and sites can share and contribute to the same content.
Up and Running in 2 mins | 2-way Sync Demonstration |
---|---|
To install git-sync simply run this command from the Grav root folder
bin/gpm install git-sync
After having installed the plugin, make sure to go in the plugin settings in order to get the Wizard configuration started.
user
(pages, themes, config) gitsync
, you can trigger the synchronization anytime someone submits a post.gitsync
event.Git Sync comes with a CLI that allows running synchronizations right within your terminal. This feature is extremely useful in case you'd like to run an autonomous periodic crontab jobs to synchronize with your repository.
To execute the command simply run:
bin/plugin git-sync sync
You can also get a status by running:
bin/plugin git-sync status
Since version 2.1.1 you can now also programmatically change user/password via the bin/plugin git-sync passwd
. This is useful if you have a container that resets your password, or you have some running scripts that require to programmatically update the password.
In order for the plugin to work, the server needs to run git
1.7.1 and above.
The PHP exec()
and escapeshellarg()
functions are mandatory. Ensure the options to be enabled in your PHP.
Since version v2.3.0, GitSync supports SSH authentication. This means you can omit password altogether and rely on the Repository URL and SSH key on your machine, that you can point to from the Advanced settings in GitSync.
Please note that In order to be able to sparse-checkout and push changes, it is expected you have an ssh-key configured for accessing the repository. This is usually found under ~/.ssh
and it needs to be configured for the same user that runs the web-server.
Point it to the secret (not the public) and make also sure you have strict permissions to the file. (-rw-------
).
Example: private_key: /home/www-data/.ssh/id_rsa
IMPORTANT: SSH keys with passphrase are NOT supported. To remove a passphrase, run the
ssh-keygen -p
command and when asked for the new passphrase leave blank and return.
Q: error: The requested URL returned error: 403 Forbidden while accessing...
(reference, #39)
A: This might be caused by your computer having stored in the registry a user/password that might conflict with the one you are intending to use.
Follow the instructions for resolving the issue...
This plugin could not have been realized without the sponsorship of HibbittsDesign.org and the development of Trilby Media.