2009-08-19 4 views
16

J'ai réussi à mettre en place une gitose pour un miroir Android (contenant plusieurs dépôts git). En ajoutant un nouveau chemin .git après writable = dans gitosis.conf, j'ai réussi à insérer quelques sauts de ligne. Enregistré, engagé et poussé au serveur quand j'ai reçu l'erreur d'analyse suivante:Comment récupérer en poussant un fichier gitosis.conf avec des erreurs d'analyse dues aux sauts de ligne?

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

(...)

J'ai enlevé le saut de ligne et amendend la validation par

git commit -m "fix linebreak" --amend

Cependant git push génère toujours exactement la même erreur. Cela m'amène à croire que la gitose m'empêche de pousser plus loin.

Comment puis-je récupérer à partir de cela?

Répondre

27

Je fais cela tout le temps. :-) La réponse est de se connecter au serveur gitosis et de modifier la copie du fichier de configuration. Dans le répertoire personnel de l'utilisateur qui possède l'instance de gitose, il devrait y avoir un lien nommé .gitosis.conf (il pointe en réalité vers gitosis-admin.git/gitosis.conf). Editez ce fichier et résolvez les problèmes là-bas; alors, quand vous poussez la prochaine fois, tout ira bien.

+0

A travaillé parfaitement. J'ai aussi dû faire un $ git merge origin/master – Shoan

+0

m'a sauvé, grand temps! –

+0

A travaillé pour moi. Merci. – cjungel

2

Vous pouvez réellement faire quelque chose d'un peu plus intelligent. Depuis gitosis-admin.git est une archive git, vous pouvez le cloner localement, réinitialiser à une version de travail et valider la modification. Une astuce est que vous devez tout faire en tant qu'utilisateur "git". Nous l'avons fait de cette façon, mais nous prévoyons de passer en gitolite, qui vérifie les erreurs avant d'incorporer des changements pour cette raison.

changement dans un répertoire vide auquel l'utilisateur « git » a accès en écriture

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)

par exemple

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

avec le drapeau interactif, il est plus difficile de faire une erreur; suivez les instructions pour choisir seulement le droit (pour travailler) commettre

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

Le git -f forces de drapeau pour faire le pousser même si la branche principale dans le repo n'est pas un ancêtre de votre nouvelle branche. Cela devrait résoudre le problème, et vous devriez être capable de pousser/tirer normalement de vos branches locales.

Questions connexes