git-annex はかなり前から存在していましたが、実際に勢いを得ることはありませんでした。
Git LFS はかなり新しく、すでにGitHub、Bitbucket、およびGitLabでサポートされています。
両方のツールは、gitリポジトリ内のバイナリファイルを処理します。一方、GitLabは1年以内に git-annex を Git LFS に置き換えたようです。
彼らはdo同じ問題を解決します。
Pro/conから始めましょう。それから技術的な違いに移ります。
git-annexは、リポジトリにコミットされるシンボリックリンクを作成することで機能します。実際のデータは、別のバックエンド(S3、rsync、その他多数)に保存されます。 haskellで書かれています。シンボリックリンクを使用するため、Windowsユーザーは別の方法で別館を使用することを余儀なくされ、学習曲線がより高くなります。
ポインターファイルが書き込まれます。 git-lfs apiを使用して、BLOBをlfsに書き込みます。このため、特別なLFSサーバーが必要です。 Git lfsはフィルターを使用するため、lfsを一度セットアップするだけでよく、再度lfsにプッシュするファイルのタイプを指定する必要があります。
Git annexの主な利点は、ダウンロードするファイルを選択できることです。
シンボリックリンクのおかげで、どのファイルが利用可能かはまだわかります。
たとえば、ISOファイルでいっぱいのディレクトリがあるとします。ファイルを一覧表示してから、次のように入力してダウンロードするファイルを決定できます。git annex get my_file.
もう1つの利点は、チェックアウト時にファイルが複製されないことです。 LFSでは、lfsファイルは.git/lfs/objectsと作業リポジトリの両方にgitオブジェクトとして存在します。したがって、20 GBのLFSファイルがある場合、ディスクに40 GBが必要です。 git annexでは、ファイルはシンボリックリンクされるため、この場合は20 GBのみが必要です。