Help us understand the problem. What is going on with this article?

バージョン管理したくない作業用スクリプトは「,」ディレクトリに入れるといい

More than 5 years have passed since last update.

TL;DR: グローバルな gitignore に ,/ を追加して、作業用スクリプトを , ディレクトリに入れると便利。 ,/tmp_script.sh で実行できる。


Git リポジトリの中に一時的に使う作業用スクリプトを置いておきたいことがある。自分だけが使うものなのでコミットはしたくないが、いちいち .git/info/exclude に追加して無視させるのも面倒臭い。

今まで自分は、 tmp_script.sh~tmp_script.sh.bak など、グローバルな gitignore で無視されるファイル名にしていたが、これは不要なファイルと間違えて消してしまう危険がある。 ignored.tmp_script.sh は分かりやすいぶん長い。 _tmp_script.sh は悪くないが、コミットすべきファイルにもアンダースコアで始まるものがあって紛らわしい。

そこで、作業用スクリプトのファイル名の先頭にカンマをつけるようにしている人の話をどこかで読んだことを思い出した。カンマはファイル名として valid で、シェルで特別な意味を持つ記号ではなく、他の人がファイル名に使わないような文字であるというのが採用の理由だったはず。

グローバルな gitignore で ,* を無視するようにして、作業用スクリプトを ,tmp_script.sh などの名前にしたら便利になった。

global-gitignore
,*

ls するとどれが作業用スクリプトが一目瞭然。カンマで始まるファイルが最初に出てくるのも分かりやすくていい(LC_COLLATE=C の場合)。

$ cd repo
$ ls
,tmp_script.sh
,tmp_script2.sh
README.md
src
...

実行は普通にできる。バックスラッシュでカンマをエスケープする必要もない。

$ ./,tmp_script.sh
Doing something...

ただ、このスクリプトを実行するとき ./,tmp_script.sh と入力するのがちょっと面倒だった。ファイル名からはカンマを取って、ファイルを , ディレクトリに入れるようにしたらよりよくなった。

global-gitignore
,/
$ cd repo
$ ls
,
README.md
src
...

$ ls ,
tmp_script.sh
tmp_script2.sh

実行するには ,/tmp_script.sh となる。 ,/./ のアナロジーになっていて指が覚えやすい。

$ ,/tmp_script.sh
Doing something...

, 内に別個のリポジトリを作って作業用スクリプトのバージョン管理をすることもできる。この恩恵がけっこう大きい。今まではスクリプトを軽く手直ししたつもりが壊してしまって復旧がだるいことがあった。他の人が使えるくらい成熟したら cp ,/hoge.sh scripts/ してコミット・共有するとみんなハッピー。

その他、テストデータやメモ書きなど、自分用のファイルには何でもカンマをつけるようにしている。

$ ls
,
,test_data_dir
,memo.txt
...

補足:他の人のやり方(ブコメより)

方法
misc/ignored/ を gitignore misc/tmp_script.sh
*.ignore を gitignore tmp_script.sh.ignore
.git ディレクトリに入れる .git/tmp_script.sh

好みに合わせてどうぞ。

uasi
Qiita, Qiita:Team, Qiita Jobs を開発していました。趣味では Rust とシェルスクリプトをよく書きます。
http://uasi.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした