如何使用git annex从ipfs复制文件?

gcuhipw9  于 2023-05-12  发布在  Git
关注(0)|答案(1)|浏览(149)

bounty还有2天到期。回答此问题可获得+50声望奖励。kenorb希望引起更多关注这个问题。

我已经克隆了Git仓库,文件存储在本地ipfs中,我已经初始化了ipfs特殊远程,但是我不能下载存储在那里的文件。
我已经按照page中的建议运行了:git annex copy --from ipfs,但文件没有下载。就像Git-Annex没有看到他们一样。
以下是我的设置(这部分工作):
1.我已经运行了本地IPFS守护进程(ipfs init; ipfs daemon)。
1.我已经安装了Git Annex(Apt/Brew install git-annex)。
1.已安装的ipfs远程脚本(根据git-annex/special remotes/ipfs页面):

mkdir -v ~/bin
wget -O ~/bin/git-annex-remote-ipfs https://git-annex.branchable.com/special_remotes/external/git-annex-remote-ipfs
export PATH="$PATH:$HOME/bin"

1.我创建了一个新的repo(mkdir test01 && cd test01 && git init)。
1.我提交了一个常规文件(touch README.md; git add README.md; git commit -m'Initial commit' README.md)。
1.初始化git-annex(git annex init
1.我已经初始化了附件远程(git annex initremote ipfs type=external externaltype=ipfs encryption=none)。
1.我已经提交了ipfs文件(echo test > ipfs-file.txt; git annex add ipfs-file.txt; git commit -m'Adds ipfs file' ipfs-file.txt)。
1.复制到本地ipfs对象存储(git annex copy --to ipfs)。
1.将本地存储库与远程存储库同步(git annex sync ipfs)。我不确定这是否有必要。
1.我已经确认文件是在ipfs有ipfs地址与CID分配(git annex whereis ipfs-file.txt).

  1. git annex list输出X__X ipfs-file.txt,另外确认文件在ipfs存储。
    克隆到新的repo并从ipfs下载文件(这部分不起作用):
    1.创建了另一个空存储库(mkdir ../test02 && cd ../test02 && git init)。
    1.从以前的存储库中提取文件(git pull ../test01)。
    1.现在ipfs-file.txt是指向不存在的文件(ls -la ipfs-file.txt)的符号链接。
    1.我已经在新的repo(git annex init)中初始化了git-annex。
    1.我已经初始化了附件远程(git annex initremote ipfs type=external externaltype=ipfs encryption=none)。
    1.已启用ipfs远程(git annex enableremote ipfs)。我觉得没必要。
    1.我做了同步(git annex sync ipfs)。我不确定这是否有必要。
    1.我已经运行了:git annex copy --from ipfs这没有做任何事情。我希望它从ipfs远程复制文件。
    我运行了以下命令:
% git annex whereis ipfs-file.txt
whereis ipfs-file.txt (0 copies) failed
whereis: 1 failed

% git annex list                 
here
|web
||bittorrent
|||ipfs
||||
____ ipfs-file.txt

这表明该文件不在ipfs remote(缺少X),但它在第一个存储库中。
我已经运行了git annex copy --from ipfs -d(带调试),但git-annex-remote-ipfs脚本甚至没有像在--to ipfs上那样被调用。

fquxozlt

fquxozlt1#

作为一种解决方法,您可以使用git annex whereis在原始存储库(test01)中查找文件的ipfs地址,以获得文件的IPFS CID。

git annex whereis ipfs-file.txt

然后,在新存储库(test02)中,使用git annex registerurl命令和获得的IPFS CID。

git annex registerurl ipfs-file.txt /ipfs/Qm...

这应该允许您在新的存储库(test02)中运行git annex copy --from ipfs并下载文件。

相关问题