web-dev-qa-db-ja.com

Git LFSとgit-annexの違いは何ですか?

git-annex はかなり前から存在していましたが、実際に勢いを得ることはありませんでした。
Git LFS はかなり新しく、すでにGitHub、Bitbucket、およびGitLabでサポートされています。

両方のツールは、gitリポジトリ内のバイナリファイルを処理します。一方、GitLabは1年以内に git-annexGit LFS に置き換えたようです。

  • 技術的な違いは何ですか?
  • 彼らは同じ問題を解決しますか?
42
Stefanus

彼らはdo同じ問題を解決します。

Pro/conから始めましょう。それから技術的な違いに移ります。

git-annex

長所:

  • バイナリを保存できる複数のリモートをサポートします。
  • ホスティングプロバイダーのサポートなしで使用できます(詳細については here を参照)。

短所:

  • ベータ版のWindowsサポート、および長い間されています
  • ユーザーは日常業務のために個別のコマンドを学ぶ必要があります
  • githubおよびbitbucketではサポートされていません

git-lfs

長所:

  • Github、bitbucket、gitlabでサポート
  • すべてのOSで最もサポートされています
  • 使いやすい。
  • フィルターに基づいて自動化

短所:

テクニカル

git-annex

git-annexは、リポジトリにコミットされるシンボリックリンクを作成することで機能します。実際のデータは、別のバックエンド(S3、rsync、その他多数)に保存されます。 haskellで書かれています。シンボリックリンクを使用するため、Windowsユーザーは別の方法で別館を使用することを余儀なくされ、学習曲線がより高くなります。

git-lfs

ポインターファイルが書き込まれます。 git-lfs apiを使用して、BLOBをlfsに書き込みます。このため、特別なLFSサーバーが必要です。 Git lfsはフィルターを使用するため、lfsを一度セットアップするだけでよく、再度lfsにプッシュするファイルのタイプを指定する必要があります。

54
grepsedawk

Git annexの主な利点は、ダウンロードするファイルを選択できることです。

シンボリックリンクのおかげで、どのファイルが利用可能かはまだわかります。

たとえば、ISOファイルでいっぱいのディレクトリがあるとします。ファイルを一覧表示してから、次のように入力してダウンロードするファイルを決定できます。git annex get my_file.

もう1つの利点は、チェックアウト時にファイルが複製されないことです。 LFSでは、lfsファイルは.git/lfs/objectsと作業リポジトリの両方にgitオブジェクトとして存在します。したがって、20 GBのLFSファイルがある場合、ディスクに40 GBが必要です。 git annexでは、ファイルはシンボリックリンクされるため、この場合は20 GBのみが必要です。

26
Karl Forner