Git-ftp
Git-ftp

If you use Git and you need to upload your files to an FTP server, Git-ftp can save you some time and bandwidth by uploading only those files that changed since the last upload. It keeps track of the uploaded files by storing the commit id in a log file on the server. It uses Git to determine which local files have changed. You can easily deploy another branch or go back in the Git history to upload an older version.

Git-ftp is an open-source command-line tool designed to upload files to FTP servers by leveraging Git's version control system. It is specifically built to streamline web deployment processes for projects hosted on traditional FTP servers.

The main features of this tool include:

  • Bandwidth & Time Savings: Instead of re-uploading your entire project directory every time you make a change, Git-ftp only uploads the specific files that have changed since your last upload.

  • Commit ID Tracking: The tool keeps track of the server's state by saving the deployed Git commit ID in a dedicated log file directly on the FTP server.

  • Git-Powered Change Detection: It relies on your local Git repository to accurately determine exactly which files have been modified, added, or deleted.

  • Flexible History Deployments: You can easily deploy alternative branches or step backward in your Git history to upload and restore an older version of your project.

  • Streamlined Configuration: Setting up the tool requires only a few basic Git configurations (defining the URL, username, and password).

  • State Alignment Options: It offers an initialization command (git ftp init) to upload all files for the first sync, as well as a catchup command (git ftp catchup) to mark the server as up-to-date if the files are already physically present on the server.

  • Open-Source & Tested Core: It is licensed under the GNU General Public License v3.0, and its core features are fully unit-tested using the shunit2 framework.

Limitations to Consider

  • Platform Support: Testing is limited on Windows and OS X platforms, meaning bugs may arise outside of Linux environments.

  • Single-User Focus: Git-ftp is not built to be a centralized, multi-user deployment tool. While running a deployment, you must ensure that no other users are making commits, checking out branches, or modifying files in the repository, as concurrent modifications can disrupt the sync process.