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


9

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

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

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

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

ヒントは大歓迎です!

回答:


6

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

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

[remote "server-c"]
    url = git@example.com:/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 git@example.com:/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 git@example.com:/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エントリのみを使用することを確認しました。


すごい!私はいくつかのテストを行いますが、これで実用的なソリューションにかなり近づくはずです。お時間と回答ありがとうございました!
Vincent

お役に立てて嬉しいです。私は休暇中にgit annexを使い始めたばかりで、今のところ非常に満足しています。
ジャスティンガイベル2013年

最後の例はうまくいくと思います。実際、それは単なるgitリポジトリであっても、rsyncファイルが
適切に配置されると思い
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.