LoginSignup
0
0

gitignoreファイルを用いて、特定のファイルの更新をメンバー単位で不可にしたい【結論:出来ない】

Last updated at Posted at 2024-04-11

出来ない理由

  • .gitignoreのファイルは「まだ追跡ファイルに含まれていないファイルを追跡ファイルに含めないようにする」設定です
  • つまり、.gitignoreを用いて更新不可にすることは不可能です。
  • .gitignoreのファイルに書かれているものでも、既にリポジトリに含まれていれば、更新可能です。
  • グローバルの.config/git/ignoreの中に更新したくないファイルのシグネチャを定義していても、Gitリポジトリに含まれていれば更新可能になります。

対応策(未調査)

  1. gitAttributeのファイルを使う?
  2. gitのフック処理を用いる?

一旦備忘録として

Git リファレンス
Git フックの適用例
.config/git/ignoreの設定に関するQiitaの記事
テストしたGithubリポジトリ


感想

大規模プロジェクトでの更新不可の設定ファイルへのプロテクトの設定に".gitignore"が使用できると思って調べてたんですが、ダメらしいです。結構調査が怠かったので、備忘的に残しておきました。

- .gitignoreのファイルは「まだ追跡ファイルに含まれていないファイルを追跡ファイルに含めないようにする」設定です

これ↑のことをちゃんと理解するまで結構時間がかかりました。そうなんだ…。
Gitのフックまで作り込むのはコストに見合っていなさそうなんで、あんまりやりたくないですね…。


追加の失敗

ディレクトリとファイルの違いがわからない

最初、.config/git/ignoreに更新不可ファイルを定義したのにGitの追跡ファイル扱いをされてしまうものだから、ignore配下に.gitignoreを追加しなければいけないのではないかと勘違いしました。
結論としてはこれは間違いで、ignoreファイルの中に定義しなければいけなかった訳ですが…。

ディレクトリであることを明示するのであれば、.config/git/ignore/と書いてあるはずなのですが、その辺りの表記の違いをあまり理解できておらず、無駄に時間を取られました。
ちなみに、その時は以下のようなエラーが出ました。

Git: fatal: cannot use /Users/gotohshiryuu/.config/git/ignore as an exclude file

今見ると、「ignoreがディレクトリになっているせいで読めないんだけど💢」というように受け取れますね…。
.gitignoreが重複しているせいでエラーになっているのかと勘違いしていました。

0
0
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
0
0