LoginSignup
10
10

More than 5 years have passed since last update.

gitで直近のコミットで修正されたファイルリストを取得する

Posted at

gitをあまり使っていなかったのですが、最近になって勉強を始めています。
使ってみると、色々と便利ですね。主にEclipseEGitBracketsBrackets 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への初投稿でした。

10
10
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10