3
3

More than 1 year has passed since last update.

git管理アプリforkとLFSを併用するときの注意

Posted at

僕はgit管理アプリの fork の大ファンなのだけどgitの仕様バグみたいなものでforkの動作がおかしくなる条件を発見したので、ちょっとメモとして残しておく。

  1. リポジトリAがあり、リポジトリBがある、BはAからforkされたもので、外注さんとのやりとりのために使うリポジトリである。
  2. リポジトリAがいろいろな都合でLFSを使いだす。

LFSを知っている人なら、.gitattributeが作られるとクライアント側でLFSがオンになるというのは知っているだろう。
.gitignoreと似た構造だが、1つ大きく違うのはgitignoreはサーバーにモノを上げるか上げないかを決めるルールだが .gitattributeはサーバー上でLFS Objectにするかを決めるルールだってことだ。
そしてLFSは結構頭が良くてサーバー上でupstream側から取得しようとしたオブジェクトがLFS Objectだと、スルっとautomaticでダウンロードしてくれる ことになっている

では リポジトリBで別段LFSをオンにせずに upstream、つまりAからLFSを使っているブランチをpullしたとき何が起こるか?

fork君はLFSをクライアント側でオンにせずにLFSの入っているリポジトリをpullするとLFS Objectをautomaticに引っ張ってくれない挙動をするのである。

結論

LFSではなかったリポジトリからLFSのリポジトリを引っ張るときは、まず先にLFS Initを実行して、LFSが有効になるようにしてから引っ張りましょう。

なお、.gitattributeの処理はclient側の話なので、clientの作りによって変わる。そしてsource treeは なんだかDLされていないLFS ObjectがあるようだけどDLするかい? とダイアログを出して聞いてくる。
少々気が利いている…利いているがだ。知っての通りwindows 版のsource treeはあまりに ナニ なので使いたくないのである。

3
3
0

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