如何在git中的特定分支上配置访问列表

Posted

技术标签:

【中文标题】如何在git中的特定分支上配置访问列表【英文标题】:how to configure access list on specific branch in git 【发布时间】:2015-12-21 12:11:37 【问题描述】:

我想问一下如何在git的特定分支上配置访问列表? 我在 apache 中使用 DAV 将 git 配置为通过 http 访问。 gitolite 版本是 1.9.1 操作系统 ubuntu 14.04/ thnx 在高级

apache2 配置

<virtualhost *:80>
ServerName git.example.com
ErrorLog $APACHE_LOG_DIR/git_error.log
CustomLog $APACHE_LOG_DIR/git_access.log combined

SetEnv GIT_PROJECT_ROOT /home/git/repositories
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias /hgit/ /home/git/bin/gitolite-shell
SetEnv GIT_HTTP_BACKEND "/usr/lib/git-core/git-http-backend"


 <Location /hgit>
 Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
    #AllowOverride All
 order allow,deny
 Allow from all

 AuthType Basic
 AuthName "git repository"
 AuthUserFile /etc/apache2/passwd.git 
 Require valid-user
 </Location>
 </virtualhost>

【问题讨论】:

【参考方案1】:

gitolite 版本不是 1.9.1。 It should be 3.6.4. 它是一个授权层,允许基于由 Apache 或 sshd 之类的监听器管理的身份验证访问 git repo。

1.9.1 is the default version of git core on trusty (Ubuntu 14.04),其中does not mean you can not upgrade it to a more recent version (currently 2.6.4)

您不应该在 Apache for Git 上使用 DAV,not since 2011 and smart https。You actually can call gitolite from Apache:如果授予访问权限,它将自己调用 git-http-backend script。

最后,要为特定分支配置访问列表(针对推送),请参阅“Gitolite restrict access to branch”。 请注意,您不能限制 read 对分支的访问:如果您可以读取(即克隆)一个 repo,您​​就可以访问它的所有分支。

【讨论】:

我在配置 DAV 时可以使用 http 进行克隆,但我无法将 gitolite 配置为与 http 兼容。请帮帮我 @EmanMohamed 不要使用 DAV:让你的 Apache 调用 gitolite,它会调用 git:***.com/questions/14104759/… 很抱歉,我不明白如何配置 gitolite 以使用 http credential。我按照此链接tikalk.com/devops/… 中的步骤操作。请详细说明如何配置它。感谢先进 @EmanMohamed 无需配置:一旦 Apache 完成身份验证 (github.com/sitaramc/gitolite/blob/…),gitolite 会查找 Apache 设置的环境变量 REMOTE_USER ScriptAliasMatch \ "(?x)^/(.*/(HEAD | \ info/refs | \ objects/(info/[^/]+ | \ [0-9a-f] 2/[0-9a-f]38 | \pack/pack-[0-9a-f]40\.(pack|idx)) | \ git-(upload|receive)-pack)) $" \ /usr/lib/git-core/git-http-backend/$1 SetEnv GIT_PROJECT_ROOT /home/git/repositories SetEnv GIT_HTTP_EXPORT_ALL SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER scriptAlias /hgit/ /home/git/gitolite/src/gitolite-shell /SetEnv GIT_HTTP_BACKEND "/usr/lib/git-core/git-http-backend" AuthType Digest AuthName "Shared Repo" AuthUserFile Require valid-user

以上是关于如何在git中的特定分支上配置访问列表的主要内容,如果未能解决你的问题,请参考以下文章

路由交换基础——ACL访问控制列表

如何获取 git commit 中的文件列表? [复制]

如何使用 Youtube API 访问特定播放列表中的所有视频?

如何从 Flutter 中的网格视图计数访问生成列表中的特定单元格?

如何获取包含 Mercurial 中特定修订的所有分支的列表?

如何使用 DataTemplate 访问列表框中的特定项目?