托管多个存储库(svn,hg,git)


8

我最近购买了一台专用服务器,并且需要从源代码管理主机服务中将几个存储库移至该服务器。在服务器管理方面经验不足,但是我不知道如何有效地组织它。我追求的是

  1. svn.host.com,hg.host.com,git.host.com子域,它们将通过SSH密钥成为不同存储库的根
  2. 轻松创建新存储库
  3. 使用服务器UNIX用户列表验证,但有每个项目的基础上的权限,也可选只读公众访问一些回购的

不幸的是,我在Google上尝试使用的任何搜索字词都将我定向到商业托管的解决方案,而不是有关如何汇总自己的指南。我需要一个简化的托管解决方案,但不需要用户能够创建自己的存储库。

关于从哪里开始研究的任何建议,教程或脚本解决方案?一个用于管理该接口的开源解决方案(或者至少对于某些应用程序来说是完美的...

Answers:


6

我只使用Git,因此我将至少尝试为您提供帮助:

如果您看不到通过命令行管理仓库的任何麻烦,则gitosis应该可以很好地解决问题。

如果确实需要Web界面,则可以查看repo.or.cz(http://repo.or.cz/w/girocco.git)或gitorious(http://gitorious.org/gitorious) 。Repo.or.cz较丑陋,但安装起来更容易(gitorious是开源的,但它也是为gitorious.org提供支持的软件-他们没有太多动力编写漂亮的说明)

以下是更全面的选项列表:https : //git.wiki.kernel.org/index.php/GitHosting

这些选项中的任何一个都可以使您轻松创建新存储库。

现在,请注意:永远不要使用UNIX服务器用户列表获取存储库权限。这很容易弄乱,结果也很容易造成灾难性的(gitosis使用简单的文件配置和ssh键。应该为您解决这个问题)。

另一件事,我不明白为什么您需要拥有Subversion,HG和Git存储库。大多数项目仅使用这些选项之一。细说为什么?


我有几个项目,在多个存储库中进行。许多提交者并不是特别精通技术,因此hg和git对他们来说将是一个问题,因此对于更开放的项目,我保留svn。我个人使用HG作为我选择的SCM。我还为我的朋友主持了几个项目,其中一些使用git作为他们选择的SCM。似乎没有办法取悦所有人:)
Kornel Kisielewicz 2011年

1
另外,您能否详细说明使用UNIX用户列表获得回购权限的危险?
Kornel Kisielewicz 2011年

3
为什么对存储库使用unix用户列表是一件坏事:粒度丢失,可移植性下降。如果需要将存储库更改为另一台服务器,则必须移动整个unix用户列表。如果要委派管理员权限,则必须授予root权限。现在,在gitosis上,如果要更改服务器,只需克隆存储库即可。如果要委派管理员权限,只需将用户添加到gitosis-admin组即可。
Tiago Fassoni'5

just_testing,已达成共识,有效分数:)
Kornel Kisielewicz 2011年

2

可以使用unix身份验证和Subversion自己的用户级ACL在vhost中通过Apache WebDAV完成SVN。我对Mercury或git一无所知,但我希望它们也能被DAV吸引住。


1

如果要使用SSH,则基本上必须通过authorized_keys在服务器上编辑文件来限制密钥。对于Mercurial,执行此操作的主要方法是:

  • 您可以使用contrib/hg-ssh脚本来限制人们使用SSH登录时可以执行的命令。该文件包含一个标题以说明如何使用它,但是您基本上添加了

    $ command="hg-ssh path/to/repo"
    

    authorized_keys文件中密钥的最前面。这限制了密钥,以便只能将其用于推入和拉入指定的存储库。

  • 如果需要gitois之类的东西,也可以使用第三方mercurial-server工具。这使您可以通过在特殊的管理存储库中编辑文件来管理用户及其访问权限。

有关其他类似SSH的工具,请参见Mercurial Wiki

对于HTTP,有

  • hgwebMercurial随附的内置(快速)CGI或WSGI脚本。它可以处理推拉操作,但不允许创建新的存储库-为此登录服务器。

  • 第三方RhodeCode项目。这为您提供了一个类似于Mercurial的类似于Bitbucket的Web前端,您可以在其中配置用户及其访问权限。它支持LDAP身份验证,因此您可以将其挂接到现有的Unix用户数据库中。

有关更多信息,请参见发布存储库页面


1

SCM-Manager可能非常适合您的需求:

通过http共享和管理Git,Mercurial和Subversion存储库的最简单方法。

  • 非常容易安装
  • 无需破解配置文件,SCM-Manager可以从其Web接口完全配置
  • 无需Apache,无需安装数据库
  • 中央用户,组和权限管理
  • 对Git,Mercurial和Subversion的开箱即用支持
  • 完整的RESTFul Web服务API(JSON和XML)
  • 丰富的用户界面
  • 简单的插件API
  • 可用的有用插件(fe Ldap-,ActiveDirectory-,PAM-Authentication)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.