2009-08-19 4 views
16

Udało mi się skonfigurować gitozę dla lustra Android (zawierającego wiele repozytoriów git). Dodając nową ścieżkę .git po writable = in gitosis.conf udało mi się wstawić kilka linii podziału. Zapisane, zaangażowana i pchnął do serwera kiedy otrzymałem następujący błąd parsowania:Jak odzyskać po naciśnięciu pliku gitosis.conf z błędami parsowania ze względu na podziały wiersza?

Traceback (most recent call last): File "/usr/bin/gitosis-run-hook", line 8, in load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-run-hook')()

File "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", line 24, in run return app.main()

File "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", line 38, in main self.handle_args(parser, cfg, options, args)

File "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/run_hook.py", line 75, in handle_args post_update(cfg, git_dir)

File "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/run_hook.py", line 33, in post_update cfg.read(os.path.join(export, '..', 'gitosis.conf'))

File "/usr/lib/python2.5/ConfigParser.py", line 267, in read self._read(fp, filename)

File "/usr/lib/python2.5/ConfigParser.py", line 490, in _read raise e

ConfigParser.ParsingError: File contains parsing errors: ./gitosis-export/../gitosis.conf

(...)

Usunąłem przerwę linii i amendend zatwierdzenia przez

git commit -m "naprawić linebreak" --amend

Jednak git push nadal daje dokładnie ten sam błąd. Prowadzi mnie to do przekonania, że ​​gitoza uniemożliwia mi dalsze popychanie.

Jak mogę odzyskać z tego?

Odpowiedz

27

Robię to cały czas. :-) Odpowiedzią jest zalogowanie się do serwera gitosis i edycja kopii pliku konfiguracyjnego. W katalogu domowym użytkownika będącego właścicielem instancji gitosis powinien istnieć link o nazwie .gitosis.conf (faktycznie wskazuje on na gitosis-admin.git/gitosis.conf). Edytuj ten plik i napraw problemy; potem, kiedy będziesz naciskać dalej, wszystko będzie dobrze.

+0

Działa doskonale. Musiałem też zrobić dodatkowy $ git merge origin/master – Shoan

+0

Ratował mnie, wielki czas! –

+0

Pracowałem dla mnie. Dzięki. – cjungel

2

Można rzeczywiście zrobić coś nieco bardziej sprytnego. Ponieważ gitosis-admin.git jest archiwum git, możesz je sklonować lokalnie, zresetować do działającej wersji i zatwierdzić zmianę. Jedna sztuczka polega na tym, że musisz zrobić wszystko jako użytkownik "git".

Zrobiliśmy to w ten sposób, ale planujemy przejść na gitolite, który sprawdza błędy przed wprowadzeniem zmian właśnie z tego powodu.

zmiana do pustego katalogu, do którego „git” użytkownik ma dostęp do zapisu

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

cd gitosis-admin

sudo -H -u git git rebase -i (commit id of last known working state)

np

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

z flagą interaktywną, trudniej jest popełnić błąd; postępuj zgodnie ze wskazówkami, aby wybrać tylko prawo (znany do pracy) zobowiązać

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

-f wymusza flag git zrobić push chociaż oddział mistrz w repo nie jest przodkiem nowego oddziału. To powinno naprawić problem i powinieneś być w stanie naciskać/ciągnąć normalnie z lokalnych oddziałów.

Powiązane problemy