机器 A 和 B 托管一个公共git 附件存储库。他们都安装了git-annex程序,我在两台机器上手动编辑/提交/等内容。A 和 B 没有同时连接到互联网,因此它们不能直接同步在一起。
服务器 C 始终打开并连接(并且免费且非常安全)。它安装了 git,但我没有管理员权限,所以我无法安装 git-annex。
我的问题:我可以使用服务器 C 作为中央集线器从 A 和 B 推送和拉取 git-annex 更新,而不必在 C 上安装 git-annex 和整个 haskell ghc 依赖项吗?
我尝试将 C 与“目录”或“rsync”特殊遥控器一起使用,但这似乎只保存文件,而不是在推/拉后更新 A 和 B 所需的其余部分。
任何提示将不胜感激!
小智 6
通过对同一服务器的 git 和 rsync 访问,您可以使用该服务器来存储历史记录(通过 git 访问)和附件键值存储(通过 rsync 访问)。这些也可以解耦并存储在任意数量的不同服务器上。
看起来您已经阅读了您需要的所有工具。基本上,您最终会得到 2 个独立的遥控器,它们都指向 server-c 上的不同位置。第一个远程 (server-c) 是一个常规的 git 远程,用于同步您的历史记录和任何直接检查到 git repo 的内容。第二个遥控器是附件专用遥控器。
[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 = ...
Run Code Online (Sandbox Code Playgroud)
您应该能够使用以下内容进行设置:
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
Run Code Online (Sandbox Code Playgroud)
这应该为您提供您正在寻找的基本功能。唯一的缺点是您有 2 个不同的远程名称,它们确实指向同一台服务器。特别是在使用 get、copy 和 move 的 --to= 或 --from= 参数时,您只需要记住使用特殊的远程 (server-c-rsync)。
可以将一个遥控器指向两个位置,但是我不确定这是否真的受支持。以下命令似乎创建了一个合理的 .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
Run Code Online (Sandbox Code Playgroud)
对我来说,这会导致 .git/config 中的单个遥控器同时具有 url=(用于正常的 git 操作)和 Annex-rsyncurl=。但是,我没有进一步测试以确保 git Annex 忽略 url 并在操作附加文件时仅使用 Annex-rsyncurl 条目。
| 归档时间: |
|
| 查看次数: |
1605 次 |
| 最近记录: |