![](/img/trans.png)
[英]git post-receive hook which connects to remote via ssh and git pulls
[英]git post-receive checkout to remote machine?
如果您將以下腳本作為hooks/post-receive
鈎子添加到裸露的git倉庫foo.git
:
#!/bin/sh
GIT_WORK_TREE=/bar git checkout -f
然后只要有人推送到版本庫,當前狀態就會在目錄bar
更新。
這要求bar
和foo.git
放在同一台機器上。
修改它以便在遠程計算機上進行結帳的最簡單方法是什么(例如baz:/bar
)?
一種方法是:
#!/bin/sh
GIT_WORK_TREE=/tmp/bar git checkout -f
rsync ... /tmp/bar baz:/bar
有沒有更好的辦法? 也許不需要中間臨時目錄? (如果不是,傳遞給rsync的正確選項是什么,以使生成的目錄與直接檢出的目錄相同?)
GIT_WORK_TREE=/bar
表示bar
是一個git repo。
如果bar
在遠端是git bare_bar.git
,那么它可以從裸bare_bar.git
(也在遠端)拉入,您可以將其推送到。
換句話說,您post-receive
鈎子將通過ssh推送到bare_bar存儲庫,而該裸存儲庫上post-receive
鈎子將觸發從實際存儲庫 bar
的拉取:請參見“ 從生產文件夾創建git存儲庫 ”。
我希望使用一種解決方案,該解決方案可以使遠程服務器中沒有任何.git目錄(甚至理想情況下甚至是git包)
在這種情況下,您當前的接收后掛鈎及其rsync
命令似乎是將新數據增量復制到遠程工作樹的唯一方法。
git archive
每次都會存檔所有內容。 git bundle
在另一端需要git。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.