gitolite设置恢复了变化

时间:2012-11-19 11:44:33

标签: git gitolite

我遇到了一个奇怪的问题,我认为这可能是一个错误。

我将配置更改推送到Git服务器。这包括一个新的存储库,所以在推送后我登录到服务器创建并初始化repo(作为主产品repo teamer.git的副本):

rwel@ve-git:/home/git/repositories/teamer$ sudo su git
git@ve-git:~/repositories/teamer$ git clone --bare ../teamer.git analytics.git
git@ve-git:~/repositories/teamer$ gitolite setup 

奇怪的是,运行" gitolite setup"似乎已经恢复了我的变化!在存储库中,出现了一个新的提交,其中包含以前的配置状态:

GitX screen shot 这里发生了什么,我该如何解决?如果您需要更多信息,请告诉我。

谢谢!


编辑:推送新配置后我遇到了一些错误,可能与它有关:

gitolite-admin rwel$ git push origin
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 1.07 KiB, done.
Total 7 (delta 2), reused 0 (delta 0)
remote: *** hooks.mailinglist is not set so no email will be sent
remote: *** for refs/heads/master update 85dd4c5e7592fadbdb0d445a245a8763d6e2042b->1063acec3b106b348fadac655d154a78ea15ead5
remote: FATAL: no files/dirs called 'hooks' or 'logs' are allowed

1 个答案:

答案 0 :(得分:2)

我想我发现了这个问题。我将(常见)挂钩放在Gitolite管理存储库([gitolite-admin.git]/hooks/common)的根目录中。 Git不喜欢这个,因此错误:

remote: FATAL: no files/dirs called 'hooks' or 'logs' are allowed

可能正因为如此,我的Gitolite安装搞砸了,安装脚本似乎试图恢复失败的提交。

修复

  1. 首先,我必须通过在服务器上克隆它来清理gitolite-admin.git仓库中的混乱,将其重置为HEAD^并强制将其推回到仓库(如所解释的那样) here)。

    git@ve-git:~/temp$ git reset --hard HEAD^
    git@ve-git:~/temp$ gitolite push origin -f
    
  2. 要修复致命错误,我只需将挂钩移动到子目录as advised in the documentation(基于步骤1中重置master的分支中):

    $ git checkout -b hooksfix origin/master
    $ mkdir extra
    $ mv hooks extra
    $ git add --all
    $ git commit -m "moved hooks directory to prevent errors"
    $ git push origin hooksfix:master
    

    为了使这项工作,我还必须在Git服务器上的.gitolite.rc文件中添加一行:

    LOCAL_CODE                  => "$ENV{HOME}/.gitolite/extra",
    
  3. 推后,致命错误消失了。然后我继续修改我对固定master的初始更改,现在也可以毫无问题地推动它。

    $ git checkout master
    $ git rebase origin/master
    $ git push origin