git-deploy is a deployment tool to allow for quick and easy deployments based on
the changes in a git repository, from git server on git push command, by adding as remote hook in github/gitlab or manualy from git repo :
git-deploy supports deployment over SSH and FTP/S
Add new repository and install by running this commands:
wget -O - https://repository.salamek.cz/deb/salamek.gpg.key|sudo apt-key add -
echo "deb     https://repository.salamek.cz/deb/pub all main" | sudo tee /etc/apt/sources.list.d/salamek.cz.list
sudo apt-get update && sudo apt-get install git-deployFor archlinux you can install package from AUR https://aur.archlinux.org/packages/git-deploy/
Just run git-deploy in your git repo root
Just simlink /usr/bin/git-deploy AS post-receive in hooks dir in repo you want to deploy
You must run git-deploy as daemon, first please edit file in /etc/git-deploy/config.py (git-deploy.cfg is deprecated and will be migrated to new version) and make it suits your needs (config values should be Self-explanatory)
Then just start git-deploy service and add it to your init if you want (for autostart on boot)
To deploy on git push to GitHub repo add a new webhook (Repo detail->Settings->Webhooks & Service->Add webhook) with this format of url : http://[servername]:[port]/deploy.json triggered on push
It's same as GitHub ;-)
In the root directory of your source code, create a deploy.py file (deploy.ini is deprecated and its support will be removed in next release).
Here is a sample code for FTP acces (port can be omitted):
CONFIG = {
# Configure target or multiple targets
  'targets': [
    {
      # Target uri, supported protocols are sftp, ftp, ftps format is standard URI
      'uri': 'ftp://user:password@example.com/',
      # Web hook to run remote hook after deploy is done, optional
      'web_hook': 'http://example.com/your_hook',
      # Enables disables this target
      'enabled': True
    }
  ],
  # Set special file rights to deployed files, relative to GIT root
  'file_rights': {
    'dir/file/*': 777,
    'dir/file': 775
  }
}git-deploy stores file called REVISION on your server inside the root path to your application.
This file stores the current revision of your application residing on your server.
When you run a git deploy, git-deploy downloads the REVISION file, and checks to see what
files are different between revisions and either upload the changed files or delete them from the server.