• 作成:

Gitでファイルを追加するだけの時に雑なメッセージを生成してコミットする

私は~/Documents/をGitで管理しています. Google Driveも使用していますが, 基本的にデータはGitで管理して自宅サーバのプライベートGitリポジトリにpushしてpullして同期しています.

一度Dropboxの同期ミスでロールバックが発生して以来, ずっとこうしています.

pushしてpullするのは少し面倒くさいですが, 常にプログラムを待受させなくて済みますし, 基本的にデータの同期は1日の最初にやるだけなので, これで十分なのです.

真に問題であるコンフリクトが発生したときに復旧するのが楽なため, 私はこの方法を気に入っています.

しかしファイルを追加するだけの時に一々コミットメッセージを書くのが面倒という問題がありました. 最近データファイルなどを単に追加することが増えたため特に面倒に感じます.

そこでファイル名だけをカンマで並べたメッセージで適当にコミットするシェルスクリプトを書きました.

私しかコミットメッセージは見ないのでこれぐらいで十分なのです.

git-add-file() {
    git add --all .
    readonly local files=$(git diff --cached --name-only .|parallel basename|perl6 -e 'lines.join(", ").say')
    git commit -m "added: ${files}"
}

シェルスクリプトで行をjoinするのは割と面倒です. 参考: シェルスクリプトの中でjoin()とsplit()相当の事をやる - Qiita

そしてこの記事で紹介されているpasteコマンドではカンマ区切り,は出来ても, 複数文字であるカンマの後にスペースを入れる,区切りは出来ないようです.

そこでperl6ワンライナーで解決しました. それはシェルスクリプトじゃないって? 私しか使わないスクリプトなので動けば良いの精神で行っています.