-
A1. 附錄 A:其他環境中的 Git
- A1.1 圖形介面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 總結
-
A2. 附錄 B:在應用程式中嵌入 Git
-
A3. 附錄 C:Git 命令
4.5 伺服器上的 Git - Git 守護進程
Git 守護進程
接下來,我們將使用「Git」協定設定一個提供儲存庫的守護進程。這是對 Git 資料進行快速、未經身份驗證存取的常見選擇。請記住,由於這不是身份驗證服務,因此透過此協定提供的任何內容在其網路中都是公開的。
如果您在防火牆外的伺服器上執行此操作,則它應該僅用於對世界公開可見的專案。如果您執行的伺服器在您的防火牆內,則您可以使用它來讓大量人員或電腦(持續整合或建置伺服器)具有唯讀存取權,而無需為每個人都添加 SSH 金鑰。
無論如何,Git 協定都相對容易設定。基本上,您需要以守護進程方式執行此命令
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
--reuseaddr
選項允許伺服器重新啟動,而無需等待舊連線逾時,而 --base-path
選項允許使用者在不指定完整路徑的情況下複製專案,而最後的路徑會告知 Git 守護進程在哪裡尋找要匯出的儲存庫。如果您正在運行防火牆,您還需要在您設定的機器上的 9418 埠打開一個孔。
您可以根據您運行的作業系統,以多種方式守護進程化此過程。
由於 systemd
是現代 Linux 發行版中最常見的初始化系統,您可以使用它來實現此目的。只需在 /etc/systemd/system/git-daemon.service
中放置一個包含以下內容的檔案
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
您可能已經注意到,這裡的 Git 守護進程是以 git
作為群組和使用者啟動的。修改它以符合您的需求,並確保提供的使用者存在於系統中。此外,檢查 Git 二進制檔案是否確實位於 /usr/bin/git
,並在必要時更改路徑。
最後,您將執行 systemctl enable git-daemon
以在啟動時自動啟動服務,並且可以使用 systemctl start git-daemon
和 systemctl stop git-daemon
分別啟動和停止服務。
在其他系統上,您可能會想使用 xinetd
,您 sysvinit
系統中的一個腳本,或其他類似的東西 —— 只要您能讓該命令以守護進程方式執行並以某種方式監控即可。
接下來,您必須告訴 Git 哪些儲存庫允許未經身分驗證的 Git 伺服器存取。您可以在每個儲存庫中建立一個名為 git-daemon-export-ok
的檔案來做到這一點。
$ cd /path/to/project.git
$ touch git-daemon-export-ok
該檔案的存在告訴 Git,可以不用驗證身份來提供此專案的服務。