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

时间:2011-01-07 13:48:34

标签: git

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

有人可以建议我为此目的使用哪个脚本。
但Trac不是我想要的。我想要的东西,最好是基于PHP的解决方案(只是可选的),尤其是。具有更简单UI的东西。

这里有任何帮助。

4 个答案:

答案 0 :(得分:10)

嗯,对于非gitosis / gitorious设置,你有两个选择:

  1. 为人们提供带有完整shell(密码和/或ssh密钥)的Linux帐户,以便访问git存储库。
  2. 通过他们的shell设置为/home/ac/.ssh/authorized_keys2的{​​{1}}中的ssh密钥,让人们访问Linux帐户。这意味着他们将无法以具有shell的linux用户身份登录,因此除了在您的计算机上使用git之外,还可以执行任何操作。
  3. 在这两种情况下,有问题的用户都需要(读写|两者)根据您的需要访问git存储库,无论是作为用户还是作为组的一部分。

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

    请注意,如果您希望允许通过只读git协议进行导出,则需要确保配置的git用户具有读访问权限,并且您的裸存储库中存在/srv/git/proj/proj-ninefingers.git。如果您希望使用git-daemon-export-okgit 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
    

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

答案 1 :(得分:1)

从来没有尝试过,但是gitorious主持他们运行的代码:

gitosis的另一个选择:

答案 2 :(得分:1)

Gitorious基于自己的代码库。 在this page,您可以找到git-repo。该项目。

Gitalist非常容易使用git Webinterface。

答案 3 :(得分:0)

如果您只想要代码存储库而不需要网页,只需将“.git”目录放在可访问的位置即可,这足以通过HTTP进行克隆(请注意,您需要使用ssh或类似方法来推送到该存储库)。 / p>

例如,我的项目以http://psi5.com/~geier/mutextrace.git的方式托管。

最好定期在该存储库上运行“git gc”以便将对象打包在一起,这样客户端就不必进行数千次访问。

如果你想要网页,那么确实是有道理的。