我遇到了一个奇怪的问题,我认为这可能是一个错误。
我将配置更改推送到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"似乎已经恢复了我的变化!在存储库中,出现了一个新的提交,其中包含以前的配置状态:
这里发生了什么,我该如何解决?如果您需要更多信息,请告诉我。
谢谢!
编辑:推送新配置后我遇到了一些错误,可能与它有关:
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
答案 0 :(得分:2)
我想我发现了这个问题。我将(常见)挂钩放在Gitolite管理存储库([gitolite-admin.git]/hooks/common
)的根目录中。 Git不喜欢这个,因此错误:
remote: FATAL: no files/dirs called 'hooks' or 'logs' are allowed
可能正因为如此,我的Gitolite安装搞砸了,安装脚本似乎试图恢复失败的提交。
首先,我必须通过在服务器上克隆它来清理gitolite-admin.git
仓库中的混乱,将其重置为HEAD^
并强制将其推回到仓库(如所解释的那样) here)。
git@ve-git:~/temp$ git reset --hard HEAD^
git@ve-git:~/temp$ gitolite push origin -f
要修复致命错误,我只需将挂钩移动到子目录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",
推后,致命错误消失了。然后我继续修改我对固定master
的初始更改,现在也可以毫无问题地推动它。
$ git checkout master
$ git rebase origin/master
$ git push origin