從新儲存庫訪問 git-annex 特殊遠端
我正在使用
git-annex
in,version 7.20190129
因為它在我的Debian Stable (Buster)
機器上提供,以將大文件置於版本控制之下,並將它們分佈在多台機器和驅動器上。只要我至少有一個“真實”git-annex
儲存庫(不是special remote
.我感興趣的是
git annex
在我的本地機器上只使用一個儲存庫,另外special remotes
(例如,或者,或者,一旦它登陸,)。bup
special remote
rsync
special remote
Debian Stable
borg
special remote
我的工作流程如下:
cd /path/to/my/local/folder git init git annex init git annex add myawesomefile git commit -m 'this works on my local repository' git annex initremote mybupbackuprepo type=bup encryption=none buprepo=/path/to/my/special/remote/location git annex sync git annex copy files --to mybupbackuprepo
然後我可以使用我
bup
special remote
的,因為我會使用一個額外的儲存庫。但是現在我想在
bup
不使用第一個本地 repo 的情況下訪問我的 repo(例如,以防我的本地機器出現故障)。據我了解(從遵循official guide
,以下應該工作:cd /path/to/new/folder/to/extract/the/backup git init git annex init git annex initremote mybupbackuprepo type=bup encryption=none buprepo=/path/to/my/special/remote git annex enableremote mybupbackuprepo git annex sync
git annex sync --content
但是我仍然看不到任何文件(甚至是一些損壞的符號連結),而且很明顯,在使用or時也無法獲取我的任何數據git annex get myawesomefile
。有任何想法嗎?我錯過了什麼?
一個特殊的遙控器只是儲存文件數據,而不是 git 儲存庫。把它想像成一個圖書館的地下室:圖書館可能會建造一個額外的房間來存放它的書籍,但是如果你想從地下室建一個圖書館,你沒有任何索引,不知道哪本書在裡面哪個目錄,而您沒有可以幫助您找到書籍的圖書管理員。
因此,在實踐中,您將需要另一個 git 儲存庫來複製 master 分支,其中包含有關去往何處的所有資訊。
在像您這樣的情況下(您自己託管該儲存),您不需要任何特殊的遠端 - 您用作源的正常(通常但不一定是裸露的)git儲存庫也可以儲存大文件,並且可以稍後結帳時使用
$ git clone ssh://host/path/repo $ cd repo $ git annex init $ git annex get --from origin
(這裡
--from origin
更多是為了說明;如果你把它關掉,git附件也會知道該怎麼做)。在許多情況下,您甚至不需要特殊的遙控器;使用特殊遙控器的原因是:
- 您希望將(小但經常需要的)git 訪問與數據訪問(大量數據)分開,並且您的數據託管程序只為您提供 rsync(或 webdav 或 s3 或任何協議)訪問,而不是完整的 shell 訪問
- 您的 git 託管程序只為您提供了裸 git,並且沒有安裝 git-annex(例如 GitLab)——那麼您需要一個額外的數據託管程序
- 您需要後端的任何特殊屬性(例如跨儲存庫的重複數據刪除,僅在您不使用加密時才有效)
在大多數情況下(就像你的情況一樣),只需使用正常的 git 遠端和附件複製數據就可以了,設置起來也少了很多麻煩,最重要的是,無論如何你都需要一個來恢復數據。