- © René Moser, [email protected], 2010-2011
- This application is licenced under GNU General Public License, Version 3.0
This is free and open source software. If you like and use it, flattr it (flattr?). Thx.
Git powered FTP client written as shell script.
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.
- See git-ftp issues on GitHub for open issues
See INSTALL file.
$ 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
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
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 [email protected] is as simple as
$ git ftp push
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 [email protected]: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.
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
Don't hesitate to use GitHub to improve this tool. Don't forget to add yourself to the AUTHORS file.