gitosis, 托管git仓库的软件

分享于 

8分钟阅读

GitHub

  繁體 雙語
software for hosting git repositories
  • 源代码名称:gitosis
  • 源代码网址:http://www.github.com/tv42/gitosis
  • gitosis源代码文档
  • gitosis源代码下载
  • Git URL:
    git://www.github.com/tv42/gitosis.git
    Git Clone代码到本地:
    git clone http://www.github.com/tv42/gitosis
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/tv42/gitosis
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    托管 。ibm。ibm。。hosting。

    便笺

    文档仍然缺乏,并且非缺省配置( 比如。 配置文件,存储库,安装在不在 PATH 中的位置基本上没有测试。 基本用法应该是非常可以靠的--项目已经长时间地承载了本项目。 欢迎任何帮助。

    gitosis 旨在使托管 git 库更轻松更安全。 它在一个用户帐户下管理多个存储库,使用SSH键标识用户。 最终用户不需要服务器上的shell 帐户,他们将与一个共享帐户进行对话,这样就不会让他们运行任意。

    gitosis 是在GPL下授权的,请参阅文件 COPYING 以获得更多信息。

    你可以通过以下方式通过 git 获得 gitosis:

    git clone https://github.com/tv42/gitosis.git

    并通过以下方式安装:

    python setup.py install

    你可能希望使用 比如 --prefix=

    设置

    首先,我们将创建拥有存储库的用户。 这通常称为 git,但是任何 NAME 都会工作,如果你真的想要的话,每个系统可以有多个。 用户不需要密码,但确实需要有效的shell ( 否则,SSH将拒绝工作)。 除非你知道自己做什么,否则不要使用现有帐户。

    我通常在子树 /srv/example.com/git ( 用你自己的域替换 example.com ) 中存储 git 存储库。 你可以选择其他位置。 调整以适合并运行:

    sudo adduser 
     --system 
     --shell/bin/sh 
     --gecos 'git version control' 
     --group 
     --disabled-password 
     --home/srv/example.com/git 
     git

    这个命令可以在Debian和Ubuntu中工作。 您的情况可能会有所不同。

    你将需要一个 SSH public 密钥来继续。 如果没有,则需要生成一个。 查看 ssh-keygen的手册页,你可能还对 ssh-agent 感兴趣。 在你的个人计算机上创建它,并保护 private 关键的--,包括不通过网络传输它。

    接下来,我们需要为这个新创建的用户设置一些东西。 以下命令创建将保存 git 存储库的~/repositories,它是实际配置文件的链接,它将使用限制它运行 gitosis-servecommand= 选项将 SSH public 键添加到 ~/.ssh/authorized_keys 中。 运行:

    sudo -H -u git gitosis-init <FILENAME.pub
    # (or just copy-paste the public key when prompted)

    只是 git clone git@SERVER:gitosis-admin.git 然后,你将得到一个带有SSH键的存储库,以及一个可以配置谁可以访问哪些对象的服务器。

    警告

    现在,gitosis 使用 HOME 环境变量来定位写入文件的位置。 如果你使用的是没有 -Hsudo -usudo 将保留旧的HOME 值,这将导致故障。 稍后将有一个解决方案,但是现在,如果你是sudoing的,请记住使用 -H

    你应该始终通过 git 编辑配置文件。 将更改推送到 gitosis-admin.git 知识库时,将覆盖服务器上的文件symlinked到 ~/.gitosis.conf

    根据需要编辑设置,提交并推送。 一旦你推动,gitosis 将立即使你的更改生效在服务器上。

    管理它

    要添加新用户:

    • 添加 keys/USER.pub 文件
    • 授权他们根据需要读/写仓库( 或者只授权组 @all )

    要创建新的存储库,只需授权写入它们并。 就是这么简单例如: ! 假设你的用户名是 jdoe,你想创建一个存储库 myproject。 在 gitosis-admin的克隆中,编辑 gitosis.conf 并添加:

    [group myteam]
    members = jdoe
    writable = myproject

    提交更改并推送。 然后创建初始提交并将它的推送:

    mkdir myproject
    cd mypyroject
    git init
    git remote add myserver git@MYSERVER:myproject.git
    # do some work, git add and commit files
    git push myserver master:refs/heads/master

    就是这样。如果现在将它的他人添加到 members,他们也可以使用这个存储库。

    示例配置

    使用 git daemon

    匿名读取仅访问 git 存储库,git daemon 是由 git 分发为的一部分。 但是 gitosis 仍将帮助你管理它: 如果在 daemon = yes 中全局地设置或者每个存储库中的设置,就会使 gitosis 创建这些存储库中的git-daemon-export-ok 文件,从而告诉 git daemon 发布那些库。

    要在Ubuntu中实际运行 git daemon,请将它的放入 /etc/event.d/local-git-daemon:

    对于其他操作系统,在 init.d 脚本。/etc/inittabinetd.confrunit 或者类似的函数中使用类似的调用。

    注意,这个短Fragment不是阅读和理解相关文档的替代。

    使用 gitweb

    gitweb 是一个CGI脚本,它允许用户浏览web上的git 存储库。 它是匿名使用的,但在让人们使用它之前,你还可以在web服务器中进行身份验证。 gitosis 可以通过生成一个公开可见的项目列表来帮助这里。 只需在 gitosis.conf 中添加一段 [repo REPOSITORYNAME],并允许使用 gitweb = yes ( 或者在 [gitosis] 下全局)。 你还应该为每个存储库设置 descriptionowner

    下面是一个 LightTPD 配置文件 Fragment,演示如何以CGI方式运行 gitweb:

    和一个简单的gitweb.conf file:

    注意,这个短Fragment不是阅读和理解相关文档的替代。

    联系人

    你可以在 tv@eagain.net 上发电子邮件,或者跳到 irc.freenode.net 频道 #git,希望能够最好地。

    将会有更多的内容,关注 http://eagain.net/ 和/或者git邮件列表。


    rep  REPO  GIT  HOST  Hosting  git-repo  
    相关文章