在 linux 文件系统树中存储 git 存储库的传统位置在哪里?

Sam*_*lle 68 linux git

如果我用托管 Web 服务器进行类比,我会说 git 的数据应该在 中/var/git,所以我的 git 存储库将在/var/git/myrepo

:那是正确的猜测吗?

vor*_*aq7 34

这里没有正确或错误的答案,除了由您自己的个人宗教和hier(7)系统上联机帮助页的内容决定的答案。

典型的 Linuxhier联机帮助页典型的 BSDhier联机帮助页

/var/git/*对我个人来说似乎是合理的。那是我保存我的地方。

  • 同样,在 Arch Linux apache 的文件夹是 /srv/http(而不是像其他发行版那样的 /var/www)所以我把我的 git 东西放在 /srv/git 中。 (3认同)

Mic*_*ton 33

将它放在/srv. 这就是它的用途。

/srv目录用于系统提供的特定站点的数据。从标准:

指定这个的主要目的是为了让用户可以找到特定服务的数据文件的位置,并且可以合理地放置需要单个树的只读数据、可写数据和脚本(例如 cgi 脚本)的服务。仅特定用户感兴趣的数据应该放在该用户的主目录中。

用于命名/srv. 根据/srv协议构造数据的一种方法是通过协议,例如。ftprsyncwww,和cvs。在大型系统中它可以是有用的结构/srv由行政上下文,诸如/srv/physics/www/srv/compsci/cvs等这种设置将从主机的不同而不同主机。因此,任何程序都不应依赖于/srv现有的特定子目录结构或必须存储在/srv. 但是,/srv应始终存在于符合 FHS 的系统上,并应用作此类数据的默认位置。

发行版必须注意不要在没有管理员许可的情况下删除这些目录中本地放置的文件。


在支持 SELinux 的系统上,默认目录是/var/www/git,并且 repos 应该在其子目录中。或者,您可以使用,例如/srv/git并将文件上下文设置为等效:

semanage fcontext -a -e /var/www/git /srv/git
Run Code Online (Sandbox Code Playgroud)

  • @anton1980你似乎误解了这个问题。 (3认同)

cli*_*ime 6

/home/git/
Run Code Online (Sandbox Code Playgroud)

起初这可能看起来有点不合常规,但这是非常合理的,因为当您执行sudo useradd git. 你可以切换到 git 用户,cd然后立即运行:

$ mkdir .ssh; chmod 700 .ssh
$ touch .ssh/authorized_keys; chmod 600 .ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

并将对等方的公钥放入刚刚创建的authorized_keys 文件中。

在你git init --bare的项目之后,“url”就是......等待它......

git@<server>:<project>
Run Code Online (Sandbox Code Playgroud)

  • 你仍然有一个很好的 `git@&lt;server&gt;:&lt;project&gt;` URL _不管_ **哪里** `git` 用户的主目录在哪里。它不必位于“/home”下,并且作为服务帐户,我不推荐该路径。`useradd -d /var/lib/git git` 产生相同的结果。 (2认同)