gitolite 设置恢复了更改

标签 git gitolite

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

我将配置更改推送到了 Git 服务器。这包括一个新的存储库,因此在推送后我登录到服务器来创建并初始化存储库(作为主产品存储库 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

最佳答案

我想我发现了问题。我将我的(通用)钩子(Hook)放置在 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. 为了修复 fatal error ,我只需将 Hook 移动到子目录 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. 推送此命令后, fatal error 消失了。然后,我继续在固定的 master 上重新调整我的初始更改,现在也可以毫无问题地推送它。

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

关于gitolite 设置恢复了更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13453090/

相关文章:

gitolite howto 允许完全访问所有分支,但限制特定集合

git - 如何在 "git clone --depth=1"之后获取整个 git 历史记录?

macos - 通过 SSH 获取超时,但通过 HTTPS 获取成功

git - merge 带有标签的分支 - Gitlab

gitolite - keydir 条目不会传播到authorized_keys

macos - 从AFS挂载的主目录进行SSH公/私钥身份验证

GIT_WORK_TREE 没有按预期工作

git - 如何从 Git 存储库中提取任何提交到文件夹/存档的所有文件?

linux - 如何完全删除 Gitosis 然后运行 ​​Gitolite?

eclipse - 如何使用 Egit 克隆创建 Eclipse 项目