从新存储库访问 git-annex 特殊远程

从新存储库访问 git-annex 特殊远程

我在用着git-annex正如version 7.20190129我的机器上提供的那样,Debian Stable (Buster)它可以将大文件置于版本控制之下,并将它们分布在多台机器和驱动器上。只要我至少有一个“真实”git-annex存储库(不是special remote)。

我感兴趣的是git annex在我的本地计算机上仅使用一个存储库,另外special remotes(例如bup special remote或者rsync special remote或者,一旦它降落在 上Debian Stableborg 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存储库而不使用第一个本地存储库(例如,以防我的本地计算机崩溃)。据我了解(从以下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或时也无法获取任何数据git annex get myawesomefile

有任何想法吗?我缺少什么?

答案1

特殊的远程仅存储文件数据,而不是 git 存储库。把它想象成图书馆的地窖:图书馆可以额外建一个房间来存放书籍,但如果你想在地窖后面建一个图书馆,你没有任何索引,不知道哪本书在哪个目录,并且您没有图书管理员可以帮助您查找书籍。

因此,在实践中,您将需要另一个 git 存储库来复制 master 分支,其中包含有关内容的所有信息。

在像您这样的情况下(您自己托管该存储),您不需要任何特殊的遥控器——您用作源的常规(通常但不一定是裸露的)git 存储库也可以存储大文件,并且可以稍后结帐时使用,就像

$ git clone ssh://host/path/repo
$ cd repo
$ git annex init
$ git annex get --from origin

(其中--from origin更多的是为了说明;如果你不写它,gitannex也会知道该怎么做)。

在许多情况下,您甚至不需要特殊的遥控器;使用特殊遥控器的原因是:

  • 您想要将(小但经常需要的)git 访问与数据访问(大量数据)分开,并且您的数据托管服务商只为您提供 rsync(或 webdav 或 s3 或任何协议)访问,而不是完整的 shell 访问
  • 你的 git 托管服务商只给你裸露的 git,并且没有安装 git-annex(例如 GitLab)——那么你需要一个额外的数据托管服务商
  • 您需要后端的任何特殊属性(例如跨存储库的重复数据删除,只有在不使用加密时才有效)

在大多数情况下(就像你的情况一样),只需使用常规的 git 远程和附件复制数据就同样好,设置起来也更少麻烦,最重要的是你无论如何都需要一个来恢复你的数据。

相关内容