Sync local git repository and remote GitHub repository automatically.
This is a cli tool to sync local git repository and remote GitHub repository automatically.
For example, if your tech team and biz team share some codebase, tech team wants to manage it with git (and GitHub) but biz team wants to edit files directly via FTP, right?
You can resolve this problem with ghsync.
Additionally, if some auto-push and auto-pull conflict, ghsync stops observing soon and sends you a notification email. So you don't have to worry about that ghsync destroys your codebase.
This tool requires local git version 18.104.22.168 or later for using
--no-edit option for
$ npm install -g ghsync
If you install with sudo
--unsafe-perm is required to generate config file after installation automatically.
$ sudo npm install -g ghsync --unsafe-perm
After installation you have now
~/.ghsync/config/default.json of configuration file with initial content. Tailor this file.
$ vi ~/.ghsync/config/default.json
git commitso that prevents creating many commits uselessly)
At first, configure webhook on GitHub.
And start ghsync server on your server.
$ ghsync run
When local git repository is directly edited ghsync commits it with message "Automatically committed". And When remote GitHub repository is updated ghsync pulls it soon.
If some auto-push and auto-pull conflict, ghsync stops observing soon and sends you a notification email like below.
Subject: [ghsync] Error occurred in auto git-pull[path]/path/to/local/repo[stdout]Updating 40a9764..dc47ada[stderr]From github.com:owner/repo* branch master -> FETCH_HEAD40a9764..dc47ada master -> origin/mastererror: Your local changes to the following files would be overwritten by merge:some/changed/filePlease, commit your changes or stash them before you can merge.Aborting
Then you should go to your server and resolve conflict by hand, and commit and push it.
After you push it, auto-pull runs because remote GitHub repository is updated just now by you, and this pulling will get successful. Then, ghsync starts observing again automatically.
# install forever$ npm install -g forever# run ghsync via forever$ forever start $(which ghsync) run# confirm process is running$ forever listinfo: Forever processes runningdata: uid command script forever pid id logfile uptimedata:  H7wO /usr/local/bin/node /usr/local/bin/ghsync run 59716 59726 /home/user/.forever/H7wO.log 0:0:0:2.636
You can stop daemon by like below.
$ forever stop 0
Please learn more at forever GitHub repository.