Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Git powered FTP client written as shell script.

tree: bd42737990

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 debian
Octocat-spinner-32 man
Octocat-spinner-32 .gitignore
Octocat-spinner-32 AUTHORS
Octocat-spinner-32 INSTALL.md
Octocat-spinner-32 LICENSE
Octocat-spinner-32 Makefile
Octocat-spinner-32 README.md
Octocat-spinner-32 git-ftp
README.md

README of git-ftp

This is free and open source software. If you like and use it, flattr it (flattr?). Thx.

Summary

Git powered FTP client written as shell script.

About

I use git-ftp for my script based projects, mostly PHP. Most of the low-cost web hoster does not provide SSH nor git support, only FTP.

That is why I needed a easy way to deploy my git tracked projects. Instead to transfer always the whole project, I thought, why not only transfer the files which changed since the last time, git can tell me those files.

Even if you are playing with different branches, git-ftp knows which files are different. No ordinary FTP client can do that.

Known Issues

Installing

See INSTALL file.

Usage

$ cd my_git_tracked_project
$ git ftp push --user <user> --passwd <password> ftp://host.example.com/public_html

For interactive password prompt use:

$ git ftp push -u <user> -p - ftp://host.example.com/public_html

Pushing for the first time:

$ git ftp init -u <user> -p - ftp://host.example.com/public_html

Testing and Help

For testing mode use --dry-run alias -D

$ git ftp push -u <user> -p --dry-run ftp://host.example.com/public_html

For more options see man page or help:

$ git ftp help

Using Defaults

Setting defaults for a git project in .git/config

$ git config git-ftp.user john
$ git config git-ftp.url ftp.example.com
$ git config git-ftp.password secr3t

After setting defaults, push to john@ftp.example.com is as simple as

$ git ftp push

Using Scopes

For using defaults for different systems, use the so called scope feature.

$ git config git-ftp.<scope>.<(url|user|password)> <value>

Here I set the params for the scope "foobar"

$ git config git-ftp.foobar.url ftp.testing.com:8080/foobar-path
$ git config git-ftp.foobar.password simp3l

Push to scope foobar alias john@ftp.testing.com:8080/foobar-path using password simp3l

$ git ftp push -s foobar

Because I didn't set the user for this scope, it takes the user "john" as set before in defaults.

Ignoring Files to be synced

Add file names to .git-ftp-ignore to be ignored.

Ignoring all in Directory config:

config/*

Ignoring all files having extension .txt in ./ :

*.txt

This ignores a.txt and b.txt but not dir/c.txt

Ingnoring a single file called gargantubrain.txt:

gargantubrain.txt

Contributions

Don't hesitate to use GitHub to improve this tool. Don't forget to add yourself to the AUTHORS file.

Something went wrong with that request. Please try again.