既存のファイルを使用したgix-annexアドインストアの初期化

既存のファイルを使用したgix-annexアドインストアの初期化

私はいくつかのギガバイトのデータを含むディレクトリを追跡するようにgit-annexを設定しました。その内容はS3リモコンにコピーされるため、一部のファイルを削除してスペースを解放し、必要に応じて再インポートできます。

同じことをしたい他のコンピュータがあります。このコンピュータには、すでにS3リモコンに保存されているほとんどのファイルが含まれています。

ローカルディレクトリにあるS3のファイルをダウンロードせずに他のコンピュータで新しいリポジトリを初期化するようにgit-annexに指示するにはどうすればよいですか?

答え1

2015-04-30 編集:

アナキャットが1つ書きました。ガイドこのユースケースについて、彼はこの回答のコメントに投稿しました。

2013年5月31日に修正:

受け入れてくれてありがとう! gioeleはコメントでは、これがダイレクトモードのreinjectgitannexリポジトリでは機能しないと指摘しました。これは意味があり、私の答えで優位を占めています。 slmを使用して選択肢を見つけ、git annex addgioeleもこのアプローチを採用しているようです。詳細については、slmの回答を参照してください。

オリジナル

gitアドオンについて聞いたことがありません。本当に素晴らしいツールです!

さて、私がgit添付ファイルから読んだ内容によるとウェブサイト、新しいシステムではgit cloneS3リポジトリでこれを行うことができ、シンボリックリンクのみをコピーするため、費用はかかりません。その後、通常通りにcd入ってgit annex init <reponamehere>リポジトリをgit add-onに教えてください。

私が理解しているように、あなたがしなければならないトリッキーなことは、gitannexにリポジトリデータのローカルコピーを認識させることです。マニュアルページでreinjectあなたがしたいことをするコマンドを見つけました。

git annex reinject /path/to/files/* /path/to/repo

--fastで無効にできるオプションを追加したい場合がありますreinject。もちろん、これは少し危険で動作しない可能性があります。reinject許可されているかどうかはわかりません--fast

findまた、目的のファイルがreinject単一のディレクトリよりも複雑な場合は、一種の単一のライナーが必要になる場合があります。それは次のとおりです。

find /path/to/files/* -type f -exec bash -c 'echo $1 "/path/to/repo/${1#/path/to/files}"' -- '{}' \;

それ(私の考えでは)は、各ファイルのパスをエコーし​​、同時に/path/to/filesリポジトリから削除されたターゲットパスもエコーします。実行後に/path/to/files置き換えるechoと、出力が期待したものと同じであることを確認できます。これと組み合わせて使用​​すると、git annex reinject大きな力と大きな責任があります:)findbash -c

出典:データ分析作業を行い、多くのファイルバッチ操作を含み、gitが本当に好きです。

答え2

git-annex開発者に質問をする彼らのフォーラムで。これは私/あなたの質問です:

新しいストレージ設定について質問があります。 S3リモートリポジトリからダウンロードするのではなく、自分のラップトップにすでに存在するローカルファイルを使用して新しいリポジトリを初期化できますか?明確でない場合は申し訳ありません。しかし、S3からローカルファイルをダウンロードするのに苦労する必要がないように、ラップトップでローカルファイルを利用しようとしています。

また、S3リポジトリに既にあるファイルと比較すると、私のラップトップにローカルにすべてのファイルの完全なセットがないことにも言及する必要があります。

の著者であるJoeygit-annexは、次のいずれかのオプションを使用できると述べています。

  1. git annex reinject特定のファイルを入力するために使用されます。
  2. すべてのローカルファイルを一時ディレクトリにチェックインします。どちらかgit-annexアシスタントgit annex addまたは、これらのファイルがすでにリポジトリにあるファイルと同じ内容を持っているかどうかをマニュアルに表示します。これにより、ファイルは一時ディレクトリと以前にリポジトリがチェックインされた場所の2つの場所で使用できます。その後、一時ディレクトリを削除できます。

関連情報