我已成功为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阻止我进一步推动。
如何从中恢复?
答案 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。这应该可以解决问题,你应该可以从本地分支机构正常推/拉。