标签: gitolite

特定存储库的gitolite hook

我不明白如何为gitolite(非root安装)中的特定存储库创建post-receive挂钩

我的裸存储库包含一个网站,应该GIT_WORK_TREE=/path/htdocs git checkout -f在更新时将工作目录复制到docRoot()

在gitolite之前,我只是更新特定存储库的钩子.
Gitolite文档提到所有钩子都应该在这里,hooks/common所以我不明白它是如何工作的.

什么应该是钩子的名称,应该在哪里定位以及应该如何改变它的结构(如果它应该)?

hook gitolite

11
推荐指数
1
解决办法
6682
查看次数

分支上的Gitolite权限

我真的很茫然.我已经阅读了很多例子,并尝试了所有这些例子.最基本的工作正常,但任何时候我尝试移动到更复杂的东西一切都崩溃了(即使我直接复制的例子).此外,为了记录我在服务器垃圾邮件显示的gitolite版本3:

    this is gitolite@ubuntuserver running gitolite3 v3.1-2-g3eefc06 on git 1.7.9.5         
Run Code Online (Sandbox Code Playgroud)

所有这些说我想要完成的是(我认为)相对简单.我有一组初级开发人员[@scrubs],我只希望他们创建并提交新的分支,并能够读取/拉取master.这样我可以在合并之前查看他们的代码.

我有一群高级开发人员[@vets]我希望自由统治.

我的配置文件如下:

     @scrubs         = al ted matthew
     @vets           = kevin will guy

     @offlimitbranches = master$

     repo    gitolite-admin
             RW+     =   @vets matthew

     repo    dawebsite
             RW+                     =   @vets
             -   @offlimitbranches   =   @scrubs
             RW+                     =   @scrubs
             R   @offlimitbranches   =   @scrubs
             R                       =   daemon
             option deny-rules = 1

     dawebsite "Owner"               = "This is THE site"
Run Code Online (Sandbox Code Playgroud)

我注意到,除非我补充说:

    option deny-rules = 1
Run Code Online (Sandbox Code Playgroud)

其中我认为我可能在20个例子中找到了一个(一点点咆哮原谅了挫折感.

通过这种当前的设置,兽医可以按预期做任何事情.

磨砂既不能拉动也不能推动掌握(我认为这是因为它抓住了它可能匹配的第一条规则?)磨砂也不能拉动或推动任何非主分支,也不能推动新创建的分支.每次尝试都返回相同的消息"致命:[R/W]任何dawebsite matthew DENIED由refs/heads/master $"

我尝试使用master,master $,@ offlimitbranches甚至refs/heads/master对分支引用无效.

如果有人能帮助我解决这个问题,我会非常感激.

更新**

玩弄我注意到的事情,如果我从磨砂组中移除马修并尝试直接操纵他

    - …
Run Code Online (Sandbox Code Playgroud)

git permissions gitolite

11
推荐指数
2
解决办法
1万
查看次数

使用gitosis指定每个分支的权限?

使用gitosis,是否可以指定写入权限,以便用户可以使用自己的名称自由推送到分支,但不能与主服务器合并?例如$ USER/test1 .. $ USER/test5

这意味着您可以为每个项目仅托管一个存储库,而不是为同一项目托管多个存储库,特定于每个用户:

 project1-user1
 project1-user2
 project1-user3
 ...
 project5-user1
 project5-user2
 project5-user3
Run Code Online (Sandbox Code Playgroud)

git gitosis gitolite

10
推荐指数
2
解决办法
9857
查看次数

gitolite push error - > remote:ENV GL_RC未设置

我正在尝试将内容从工作站推送到服务器.但它给了我一个错误.请查看以下命令和错误:

Administrator@ganesh ~/testing  
$ git push origin master  
Counting objects: 3, done.  
Writing objects: 100% (3/3), 241 bytes, done.  
Total 3 (delta 0), reused 0 (delta 0)  
remote: ENV GL_RC not set  
remote: BEGIN failed--compilation aborted at hooks/update line 20.  
remote: error: hook declined to update refs/heads/master  
To git@ganesh:repositories/testing  
 ! [remote rejected] master -> master (hook declined)  
error: failed to push some refs to 'git@ganesh:repositories/testing'  
Run Code Online (Sandbox Code Playgroud)

看来我需要设置环境变量GL_RC.是这样吗?

这里的任何人都可以告诉我问题可能是什么以及我如何解决它?我在Windows Server 2003上使用gitolite.

git git-svn msysgit gitolite

10
推荐指数
1
解决办法
2万
查看次数

针对Apache的gitolite存储库的GitSmartHTTP不允许我推送

我正在设置一个git-http-backend CGI脚本来处理我的git.domain子域.服务器位于AWS云上的ELB(弹性负载平衡器)后面.我的服务器配置如下(我的git托管由gitolite处理):

<VirtualHost *:80>
    ServerName git.domain
    ServerAdmin hjpotter92+git@domain

    #SuexecUserGroup git git                                                                                                                                                                    
    DocumentRoot /opt/gitolite/repositories/

    PerlLoadModule Apache::Authn::Redmine

    SetEnv GIT_PROJECT_ROOT /opt/gitolite/repositories/
    SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER # Have also tried removing this variable
    SetEnv GIT_HTTP_EXPORT_ALL

    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))$" \
        /opt/gitolite/git-core/git-http-backend/$1

    <Directory "/opt/gitolite/git-core">
        AllowOverride None
        Options +ExecCGI -Includes
        Require all granted
    </Directory>
    <Location />
        # enabled in desparation...
        # saw it somewhere in bugzilla powered mailing list
        DAV On

        Order …
Run Code Online (Sandbox Code Playgroud)

apache virtualhost gitolite smart-http git-http-backend

10
推荐指数
1
解决办法
419
查看次数

使用gitolite拒绝读取特定的存储库分支

我想要实现的目标如下:同事在@coworkers组,客户在@clients组.

Git仓库应该可以为每个人读写,但是应该有特殊的分支.即我创建一个新的分支"实习生"和@coworkers应该有RW + access,但客户端不应该能够R或W.

我以为我能做到这一点

repo myrepo
    -    intern    = @clients
    RW+            = @clients @coworkers
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

git acl gitolite

9
推荐指数
2
解决办法
3566
查看次数

如何在TeamCity从SSH Git存储库获取更改时解决超时异常

我已经将Git存储库从网络上的共享文件夹移动到运行gitolite的SSH服务器.我为TeamCity添加了一个公钥/私钥以供使用,并将VCS根指向它.这一切都正常,因为测试连接成功,我的构建配置显示挂起的更改.

但是,当TeamCity尝试获取这些挂起的更改时,我收到以下错误:

'git fetch' command failed.
exception: Timeout exception
Run Code Online (Sandbox Code Playgroud)

切换到详细日志记录我发现它在90秒后超时 - 我认为在正常情况下,获取这些更改只需要几秒钟.

自从我开始尝试解决问题以来,我已将VCS根目录更改为"默认私钥",并添加了所需的.ssh文件夹以及config,id_rsa和known_hosts文件.我在日志中看到了指纹和密码消息,直到我将必要的东西放在这些文件中,现在我的服务器又回来再次给出Timeout异常,就像我在VCS根目录中指定密钥一样.

如果我从命令行运行Git,我可以在没有任何提示的情况下克隆存储库(当我按上面设置.ssh文件夹时).这是来自不同的用户帐户,因为TC在默认的SYSTEM帐户下作为服务运行,但我不认为这是原因,因为我说我可以看到TC已经获取了对.ssh文件夹的更改帐户.

可能有什么不对?

git ssh teamcity gitolite

9
推荐指数
1
解决办法
3017
查看次数

Git:推荐的Web开发设置

两周以来,我一直在努力在我们的办公室实施Git.不是缺乏文档,而是丰富的示例,教程和git的各种用途让我对Web开发的推荐设置感到困惑.

我想我有一个不错的设置,但在进入另一个结构之前,我想咨询更有经验的人.我有以下几点:

  • 工作站推送到本地登台服务器(A)
  • 本地登台服务器与gitolite一起使用以正确划分角色
  • 钩子自动将对登台服务器的任何更改推送到生产服务器上(B)

这可视化如下: 在此输入图像描述

这有意义吗?我们有各种较小的PHP网站,没有什么比这更复杂的了.我的疑虑是:

  • 我应该使用什么样的"钩子"(B)?
  • 我还应该在生产服务器上运行gitolite吗?我觉得我不应该,因为毕竟只是一个用户将内容上传到服务器(登台服务器上的挂钩),但我不确定.
  • 我的出发点是:我们在生产服务器上有所有网站,还没有登台服务器和工作站.在初始设置时,将它们"拉"到舞台和工作站的方便方法是什么?

现在,以下问题是一些额外的想法,目前不是最重要的,但如果你碰巧知道更多,请分享你的想法:

  • 为简单起见,我更喜欢能够git push从工作站运行并更新登台服务器和生产服务器.但有时,在上线之前,只更新登台服务器并首先查看那里的内容可能会有用.有一个简单的解决方案吗?

  • 实际上,我们不仅有一个而且有几个不同的生产服务器.但只有一个登台服务器.有没有办法配置不同的生产服务器,以便git自动将它们推送到正确的服务器?

在此先感谢分享您的想法!

git gitolite

9
推荐指数
1
解决办法
2445
查看次数

如何在gitolite中安装挂钩

我已经阅读了有关钩子,类似 问题大量代码的所有文档,但我无法跟踪我的过程中的错误.我需要在我的gitolite安装中安装一个简单的钩子(在CentOS上用rpm包制作)所以这就是我做的:

要安装gitolite(前一段时间):

  1. 安装了rpm包
  2. # su - gitolite
  3. $ gl-setup /tmp/fabio.pub (作为gitolite用户)

现在安装钩子:

  1. 创建一个样本文件post-update与挂钩代码~gitolite/.gitolite/hooks/common,并chmod +x在其上
  2. gl-setup /tmp/fabio.pub如此处所述再次运行

但是没有任何反应,最新命令的退出状态为0,但钩子文件没有在任何存储库中进行符号链接.那我的手术有什么问题?我错过了什么吗?

奖金问题:

  1. 如果我理解了文档我的程序是正确的吗?即我每次更新任何钩子时都应该运行gl-setup?
  2. 通过这种方式,我在这个gitolite安装下的每个存储库中安装共享挂钩,是吗?我可以手动将挂钩作为符号链接安装到某个地方,还是仅仅为给定的存储库安装可执行脚本?我应该在给定存储库的hook文件夹中手动执行此操作吗?我是否应该关注钩子冲突(即单个存储库的任何自定义钩子是否阻止任何其他具有相同名称的共享钩子)?

不知道这是否重要,我的gitolite版本是1.5.9.1.

git gitolite githooks

9
推荐指数
1
解决办法
8597
查看次数

Ubuntu上的Gitolite:没有管理员给出

我在Hyper-V上的Ubuntu Server 12.04LTS(已下载并安装在15日)上有我称之为"vanilla"的安装.

Ubuntu似乎都很好.合成网卡很棒.没有检测到问题.

我的计划是使用它作为使用Gitolite的中央GIT存储库.

我已正确安装SSh(至少我认为这是因为我可以" ssh myaccount@mydomain.com".

密钥是在我的Mac终端上生成并复制的.这工作得很好.

我的问题是,当我尝试安装Gitolite时,我收到以下错误:

   No adminkey given - not setting up gitolite.
Run Code Online (Sandbox Code Playgroud)

这些是我用来执行安装的命令:

sudo apt-get install git-core
sudo apt-get install gitolite
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

sudo apt-get install git-core

sudo adduser \
  --system \
  --shell /bin/bash \
  --gecos 'git version control' \
  --group \
  --disabled-password \
  --home /home/git \
git

sudo apt-get install gitolite
Run Code Online (Sandbox Code Playgroud)

......同样的结果

一些版本信息:

Git core: 1:1.7.9.5-1
Gitolite: 2.2-1
Ubuntu: 12.04
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?
Gitolite真的可以在Ubuntu 12.04上运行吗?

git ubuntu gitolite

9
推荐指数
2
解决办法
7234
查看次数