簡體   English   中英

git post-receive結帳到遠程計算機?

[英]git post-receive checkout to remote machine?

如果您將以下腳本作為hooks/post-receive鈎子添加到裸露的git倉庫foo.git

#!/bin/sh
GIT_WORK_TREE=/bar git checkout -f

然后只要有人推送到版本庫,當前狀態就會在目錄bar更新。

這要求barfoo.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命令似乎是將新數據增量復制到遠程工作樹的唯一方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM