传统的地方在Linux文件系统树中存储git存储库在哪里?

如果我用一个Web服务器来进行类比,我会说git的数据应该在/var/git ,所以我的git仓库将在/var/git/myrepo

:这是正确的猜测吗?

这里没有对错的答案,除了你自己的个人信仰和你系统上的hier(7)的内容。

典型的Linux hier页 ; 典型的BSD hier manpage )

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

将其放置在/srv下的目录(或共享文件系统)中。 这是它的目的。

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

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

用于命名/srv子目录的方法没有指定,因为目前还没有就如何完成这个问题达成共识。 在/srv下构造数据的一种方法是通过协议,例如。 ftprsyncwwwcvs 。 在大型系统上,通过pipe理上下文来构造/srv可能是有用的,比如/srv/physics/www/srv/compsci/cvs等等。这个设置会因主机而异。 因此,程序不应该依赖/srv存在的特定的子目录结构或者必须存储在/srv 。 但是/srv应该始终存在于符合FHS的系统上,并且应该用作此类数据的默认位置。

发行版必须注意不要在没有pipe理员权限的情况下删除这些目录中的本地文件。


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

 semanage fcontext -a -e /var/www/git /srv/git 
 /home/git/ 

这起初看起来可能有些不合常规,但是当你使用sudo useradd git时候,这个目录是非常合理的(正确的权限)。 你可以切换到git用户, cd然后立即运行:

 $ mkdir .ssh; chmod 700 .ssh $ touch .ssh/authorized_keys; chmod 600 .ssh/authorized_keys 

并把你的同伴的公钥放到刚创build的authorized_keys文件中。

当你git init --bare你的项目,“url”然后只是…等待它…

 git@<server>:<project> 

这完全取决于你。 但是,最好将git数据目录放在一个单独的分区或磁盘上,以使系统升级等更容易,当然,您必须确保有足够的磁盘空间可用。

在我的Arch Linux上,我的/srv/http用于apache(这是系统默认的),我也用它来pipe理我的node.js http服务器。 同样,我决定把所有的git仓库放在/srv/git

我使用GitLab,在这种情况下, /srv/git也是/srv/git的主文件夹。

最终,这取决于你。 我发现坚持使用类似于发行版中其他服务的格式很容易记住。

正如voretaq7所说的那样,这样的话题没有对错的答案。 但是,如果你想遵循软件,似乎数据库软件存储他们的数据

 /var/lib/soft 

例如,对于Debian上的Postgresql 9.1,该文件夹是

 /var/lib/postgresql/9.1/ 

所以我会selectpersonnaly

 /var/lib/git 

如果您使用某个前端进行混帐,那么只要您的发行版打包的任何地方想要放置它们即可。 别的什么都只是造成不必要的不​​兼容。

首先,关于使用/ srv的build议,你假设所有的git仓库都被用于网站。 对你来说可能是真的,但你可以有一个不是网站的软件。

其次,通过将代码存储库存储在/ var / www / html或/ srv / html之外,可以获得两个好处。 您可以在任何级别在您的仓库中创build符号链接,从而更容易隐藏您的库。 另外,如果您的存储库的位置根本不变,则不必修改虚拟主机configuration。 相反,你只需调整你的符号链接。

我使用/ var / repo,但是我认为/ var / git更好,并且将从现在开始使用。