在未安裝 git-annex 的伺服器上託管 Git 附件

在未安裝 git-annex 的伺服器上託管 Git 附件

機器 A 和 B 共用一個git 附件儲存庫。他們都擁有git 附件安裝了程序,我在兩台機器上手動編輯/提交/等內容。 A 和 B 沒有同時連接互聯網,因此無法直接同步。

伺服器 C 始終開啟並連接(且免費且非常安全)。它安裝了 git,但我沒有管理員權限,所以無法安裝 git-annex。

我的問題:我可以使用伺服器 C 作為中央集線器從 A 和 B 推送和拉取 git-annex 更新,而無需在 C 上安裝 git-annex 和整個 haskell ghc 依賴項嗎?

我嘗試將 C 與“目錄”或“rsync”一起使用特殊遙控器,但這似乎只保存文件,而不是推/拉後更新 A 和 B 所需的其餘內容。

任何提示將不勝感激!

答案1

透過 git 和 rsync 存取同一台伺服器,您可以使用該伺服器來儲存歷史記錄(透過 git 存取)和附件鍵值儲存(透過 rsync 存取)。這些也可以解耦並儲存在任意數量的不同伺服器上。

看起來您已經閱讀了所需的所有工具。基本上,您最終會得到 2 個獨立的遙控器,它們都指向 server-c 上的不同位置。第一個遠端 (server-c) 是常規 git 遠端,用於同步您的歷史記錄以及直接簽入 git 儲存庫的任何內容。第二個遙控器是附件專用遙控器。

[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)。

可以將一個遙控器指向兩個位置,但我不確定這是否真的受支援。以下命令似乎創建了一個合理的 .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= 的遠端。但是,我沒有進一步測試這一點,以確保 gitannex 忽略 url,並在操作附件檔案時僅使用annex-rsyncurl 條目。

相關內容