-
A1. 附录 A:Git 在其他环境中的应用
- A1.1 图形界面
- A1.2 Git 在 Visual Studio 中的应用
- A1.3 Git 在 Visual Studio Code 中的应用
- A1.4 Git 在 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的应用
- A1.5 Git 在 Sublime Text 中的应用
- A1.6 Git 在 Bash 中的应用
- A1.7 Git 在 Zsh 中的应用
- A1.8 Git 在 PowerShell 中的应用
- 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,允许在没有身份验证的情况下提供此项目。