git-annex がインストールされていないサーバーで Git Annex をホストする

git-annex がインストールされていないサーバーで Git Annex をホストする

マシンAとBは共通のgit 別館リポジトリです。どちらもgit-annexプログラムがインストールされ、両方のマシンで手動で編集/コミットなどを行っています。A と B は同時にインターネットに接続されていないため、直接同期することはできません。

サーバー C は常にオンで接続されています (無料かつ非常に安全です)。git がインストールされていますが、管理者権限がないため、git-annex をインストールできません。

質問: git-annex と haskell ghc 依存関係全体を C にインストールせずに、サーバー C を中央ハブとして使用して、A と B の両方から git-annex の更新をプッシュおよびプルできますか?

「ディレクトリ」または「rsync」でCを使用してみました特別なリモコンただし、これはファイルのみを保持しており、プッシュ/プル後に A と B を更新するために必要な残りの部分は保持していないようです。

ヒントがあればぜひ教えてください!

答え1

同じサーバーへの git と rsync アクセスにより、そのサーバーを使用して履歴 (git アクセス経由) と付属のキー値ストア (rsync アクセス経由) の両方を保存できます。これらを分離して、任意の数の異なるサーバーに保存することもできます。

必要なツールについてはすでにすべて読んでいるようですね。基本的には、server-c 上の異なる場所を指す 2 つの別々のリモートが作成されます。最初のリモート (server-c) は、履歴と git リポジトリに直接チェックインされたものを同期するための通常の git リモートです。2 番目のリモートは、別個の特別なリモートです。

[remote "server-c"]
    url = [email protected]:/path/to/repo.git
    fetch = +refs/heads/*:refs/remotes/server-c/*
[remote "server-c-rsync"]
    annex-rsyncurl = example.com:/home/user/annex-rsync
    annex-uuid = ...

次のような方法でこれを設定できるはずです:

git remote add server-c [email protected]:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none

これで、必要な基本機能が得られます。唯一の欠点は、実際には同じサーバーを指す 2 つの異なるリモート名があることです。特に、get、copy、move の --to= または --from= 引数を使用する場合は、特別なリモート (server-c-rsync) を使用することを忘れないでください。

1 つのリモートを両方の場所にポイントすることは可能かもしれませんが、これが実際にサポートされているかどうかはわかりません。次のコマンドは、適切な .git/config を作成するようです。

git init
git annex init "test"
git remote add server-c [email protected]:/path/to/repo.git
git annex initremote server-c type=rsync rsyncurl=example.com:/rsync/user encryption=none

私の場合、この結果、.git/config に url= (通常の git 操作用) と annex-rsyncurl= の両方を含む単一のリモートが作成されます。ただし、git annex が url を無視し、添付されたファイルで操作するときに annex-rsyncurl エントリのみを使用することを確認するために、これ以上テストは行っていません。

関連情報