在我自己的服务器上托管Private Git回购?

Sto*_*oic 12 git

我正在寻找一种在我自己的服务器上托管私人git repos的方法.
我正在使用Github作为我的开源项目,但我更喜欢使用自己的服务器来存储私有git存储库.

有人可以建议我应该使用哪个脚本来实现此目的.
但Trac不是我想要的.我想要的东西,最好是基于PHP的解决方案(只是可选的)和esp.具有更简单UI的东西.

这里有任何帮助.

小智 10

那么,对于非Gitosis/gitorious设置,你有两个选择:

  1. 为人们提供带有完整shell(密码和/或ssh密钥)的Linux帐户,以便访问git存储库.
  2. 通过/home/ac/.ssh/authorized_keys2其shell设置为的ssh密钥,允许用户访问Linux帐户/usr/bin/git-shell.这意味着他们将无法以具有shell的linux用户身份登录,因此除了在您的计算机上使用git之外,还可以执行任何操作.

在这两种情况下,有问题的用户都需要(读写|两者)根据您的需要访问git存储库,无论是作为用户还是作为组的一部分.

你可能有一个目录/ git /项目,然后在那里有用户存储库是有意义的,因为有多个人推送到同一个存储库通常是一个坏主意(根据我的经验,人们很容易打破事情).例如,您可能拥有/srv/git/proj/proj-ninefingers.git并拥有"/ srv/git/proj/project.git"的"发布"回购.这可能是我在运行团队工作时所做的事情.权限,shell等适当设置.

请注意,如果您希望允许通过只读git协议进行导出,则需要确保配置的git用户具有读访问权并且git-daemon-export-ok存在于裸存储库中.如果你想使用它,git update-server-info也必须在gitweb拿起存储库之前运行.

正如其他人所说,git gc优化存储库,定期执行此操作是个好主意.Cron工作?

最后,为了简化这一过程,存在过多的框架(gitosis,gitorious,......).我不认为它比通过各种机制提供对文件夹的访问更简单,但那就是我.

作为我的设置的一个例子,只有我,我有:

$ cat /etc/passwd | grep git
git:x:1002:1002:Antony Vennard,,,:/home/git:/usr/bin/git-shell
gitdaemon:x:112:65534::/nonexistent:/bin/false
$ cat /etc/group | grep git
git:x:1002:
$ ls -l /srv/git
drwxr-xr-x 7 git  git 4096 2010-09-12 23:31 bsdnt.git
drwxr-xr-x 7 git  git 4096 2010-06-16 22:32 vforth.git
$ cat /home/git/.ssh/authorized_keys2
ssh-rsa somehex user1
ssh-rsa somehex user2
Run Code Online (Sandbox Code Playgroud)

这意味着拥有私钥user1的任何人都可以登录并提交到这些存储库中的任何一个.