gitをあまり使っていなかったのですが、最近になって勉強を始めています。
使ってみると、色々と便利ですね。主にEclipseのEGitとBracketsのBrackets Gitで使っています。
色々と調べたところ、bare repositoryをサーバーに作っておくと、ローカルからのGit Pushをトリガーとしてshell scriptで処理が書けるという事を知り、ちょっと便利そうなものをgithubに公開しました。
typoとかで何回も公開し直すという情けない状態ですが...
このhookを設定すると、以下の事が可能になります。Webサイトの更新を想定しています。
- 同一サーバーの指定ディレクトリに更新ファイルを配置する
- リモートのサーバーにscpでファイルを転送する
- リモートのサーバーにftp (ncftp)でファイルを転送する
しかし、リモートサーバーに転送する機能は、更新の有無に関わらず、すべてのファイルを転送し、削除すべきファイルも削除できない、という使わない方が良いロジックです。
この部分に関しては、git logコマンドを使って転送用のファイルリストと削除用のファイルリストを作ってしまえば、効率的なプログラムに修正できそうです。
ファイルリストを作成するためのコマンドは以下の通りです。(この例では画面表示)
転送用ファイルリスト:
git log --name-status -p -1 | egrep "^[AM]\s.*" | awk '{print $2}'
削除用ファイルリスト:
git log --name-status -p -1 | egrep "^D\s.*" | awk '{print $2}'
以上、qiitaへの初投稿でした。