我有多個貢獻者的私人git存儲庫。我希望在網絡驅動器中擁有最新版本的存儲庫主分支,這樣每個人(包括那些不使用git的人)都可以訪問存儲庫中的工具。如何爲非git協作者維護最新版本的git存儲庫
我明白,這可能是可能的與git掛鉤,但我不知道如何或什麼是最佳做法這樣做。
網絡驅動器中的目錄應該只是git存儲庫主服務器的一個克隆,如果它被意外修改,那麼每當有人下次要提交時就應該清理它。
編輯:大多數貢獻者和合作者使用Windows。
我有多個貢獻者的私人git存儲庫。我希望在網絡驅動器中擁有最新版本的存儲庫主分支,這樣每個人(包括那些不使用git的人)都可以訪問存儲庫中的工具。如何爲非git協作者維護最新版本的git存儲庫
我明白,這可能是可能的與git掛鉤,但我不知道如何或什麼是最佳做法這樣做。
網絡驅動器中的目錄應該只是git存儲庫主服務器的一個克隆,如果它被意外修改,那麼每當有人下次要提交時就應該清理它。
編輯:大多數貢獻者和合作者使用Windows。
通常情況下,您將設置一個webhook,它將偵聽推送事件並自動爲您更新本地回購。
例如見this webhook(或this one):
<?php
// Use in the "Post-Receive URLs" section of your GitHub repo.
if ($_SERVER['HTTP_X_GITHUB_EVENT'] == 'push') {
shell_exec('cd /path/to/network/drive/git-repo/ && git reset --hard HEAD && git pull');
}
?>hi
然而,這假設你有網絡驅動器上回購的完整克隆。
既然是私人回購,我寧願只有一個工作樹(沒有歷史)就可以了,這意味着我的網絡掛接會做:
git --work-tree=/path/to/network/drive/git-repo checkout --force
您需要勾上推送事件(見here)。每當你從該掛鉤收到請求時,你可以做
git fetch origin
git reset --hard origin/master
這將獲取從「起源」資料庫的更新和改變當地「主人」分支的相同狀態的遠程「主」。
我想知道這是否適用於Windows,因爲大多數貢獻者都使用Windows,並且沒有管理員權限。如果在未連接到網絡驅動器所在的網絡時嘗試推送到github,是否會導致問題。這通常不是這種情況,但我不希望別人得到任何奇怪的錯誤消息,因爲他們使用GitHub桌面客戶端的git,並且不願意混淆git。 – Lesenger
@Lesenger它工作得很好:我的Windows機器上沒有管理員權限,無論是在工作中。網絡路徑就在那裏供其他人閱讀,而不是修改或推送。任何推動是從一個正常的本地回購。 – VonC
對於webhook,我還是有點困惑。我甚至把這些webhook放在哪裏? GitHub存儲庫設置有'添加webhook'部分,但它有'Payload URL','內容類型'和'祕密'字段。另外我不太明白webhook命令執行的方式。有人推動回購後會發生什麼事情?和我一起。我根本不瞭解這些服務器端的東西。 – Lesenger