如何从推送gitosis.conf文件中恢复时出现因换行而导致的解析错误?

时间:2009-08-19 14:16:28

标签: git gitosis

我已成功为Android镜像设置gitosis(包含多个git存储库)。在gitosis.conf中的writable =之后添加新的.git路径时,我设法插入了几个换行符。当我收到以下解析错误时保存,提交并推送到服务器:

  

追踪(最近一次通话):    文件“/ usr / bin / gitosis-run-hook”,第8行,in       load_entry_point('gitosis == 0.2','console_scripts','gitosis-run-hook')()

     

文件“/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py”,第24行,在运行中返回app.main()

     

文件“/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py”,第38行,主要       self.handle_args(parser,cfg,options,args)

     

文件“/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/run_hook.py”,第75行,在handle_args中       post_update(cfg,git_dir)

     

文件“/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/run_hook.py”,第33行,在post_update中       cfg.read(os.path.join(export,'..','gitosis.conf'))

     

文件“/usr/lib/python2.5/ConfigParser.py”,第267行,正在阅读       self._read(fp,filename)

     

文件“/usr/lib/python2.5/ConfigParser.py”,第490行,在_read       提高e

     

ConfigParser.ParsingError:文件包含解析错误:./ gitosis-export /../ gitosis.conf

     

(...)

我已经删除了换行符并通过

来提交了提交

git commit -m“fix linebreak”--amend

然而git push仍会产生完全相同的错误。这让我相信gitosis阻止我进一步推动。

如何从中恢复?

2 个答案:

答案 0 :(得分:27)

我一直这样做。 :-)答案是登录gitosis服务器并在那里编辑配置文件的副本。在拥有gitosis实例的用户的主目录中,应该有一个名为.gitosis.conf的链接(它实际上指向gitosis-admin.git / gitosis.conf)。编辑该文件并解决问题;然后,当你下一步推动时,它会很好。

答案 1 :(得分:2)

你实际上可以做一些更聪明的事情。由于gitosis-admin.git是一个git存档,您可以在本地克隆它,重置为工作版本并提交更改。一个诀窍是你必须做所有的“git”用户。

我们这样做了,但是我们计划改为使用gitolite,它会在合并更改之前检查错误。

更改为“git”用户具有写访问权限的空目录

  

sudo -H -u git git clone(gitosis repo目录)/ gitosis-admin.git

     

cd gitosis-admin

     

sudo -H -u git git rebase -i(最后一个已知工作状态的提交ID)

e.g。

  

sudo -H -u git git rebase -i HEAD ^^

使用交互式标志,更难犯错误;按照指示选择正确的(已知工作)提交

  

sudo -H -u git git push -f origin master

即使repo中的master分支不是新分支的祖先,-f标志也会强制git执行push。这应该可以解决问题,你应该可以从本地分支机构正常推/拉。