我想知道如何使用一对fifos作为在Git存储库克隆之间交换提交的方法。
git-remote-fd从客户端的角度介绍了如何使用它,但没有给出如何设置相关服务器部分的任何示例。
到目前为止,我尝试了以下内容:
(cls: A)
但是,没有运气。这五个人明显受阻。命令挂起并永远不会完成。
我想" git push"不是服务器部分的正确命令," git send-pack"或" git upload-pack"会更合适。但我很难理解如何实际使用这两个命令。
有什么想法吗?
答案 0 :(得分:1)
使用git receive-pack
和git upload-pack
轻松管道git通过管道提交。
通常git receive-pack
和git upload-pack
接受1个参数,一个git目录(包含objects
文件夹的目录),然后通过其stdin / stdout与远程执行全双工通信git push / pull。
手动调用git receive-pack
命令很简单:
mkfifo ab && mkfifo ba
# Now I want to push from a to b via the fifos
(git receive-pack b/.git) 1> ba 0< ab &
(cd a && git push fd::8,9 master) 8< ba 9> ab
git upload-pack
的相同方式:
mkfifo ab && mkfifo ba
# Now I want to push from a to b via the fifos
(git upload-pack a/.git) 1> ab 0< ba &
(cd b && git pull --no-edit fd::8,9 master) 8< ab 9> ba
请注意git pull
和git push
并非完全相反的操作:
git push
默认拒绝推送,当另一方提交它没有自己的提交时(除非-f
已经给出,然后它将覆盖`),而pull进行合并提交git pull
可以打开一个编辑器来编辑合并提交,除非已经给出了--no-edit
标志(如果编辑器是vi则是潜在的安全漏洞)