ho risolto un problema simile.Potrebbe non essere esattamente quello che sta accadendo nel tuo caso ma potresti provare a riapplicare la stessa risoluzione dei problemi che ho fatto.
Mi sono reso conto che quando stavo spingendo le chiavi per un nuovo utente stavo ottenendo questo stacktrace, che è il sintomo che l'hook on gitosis non è riuscito a elaborare la nuova chiave.
remote: Traceback (most recent call last):
remote: File "/usr/local/bin/gitosis-run-hook", line 9, in <module>
remote: load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-run-hook')()
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 24, in run
remote: return app.main()
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 38, in main
remote: self.handle_args(parser, cfg, options, args)
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/run_hook.py", line 81, in handle_args
remote: post_update(cfg, git_dir)
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/run_hook.py", line 45, in post_update
remote: config=cfg,
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/gitdaemon.py", line 95, in set_export_ok
remote: for (dirpath, repo, name) in walk_repos(config):
remote: File "/usr/local/lib/python2.7/dist-packages/gitosis-0.2-py2.7.egg/gitosis/gitdaemon.py", line 72, in walk_repos
remote: assert ext == '.git'
remote: AssertionError
L'errore è stato solo mostrando VOLTA, così ho ingenuamente respinto come un fallimento momentaneo.
In pratica, Gitosis stava lavorando solo per la mia chiave, ma non funzionava per nessuno degli utenti che stavo cercando di supportare. Nel ~/.ssh/authorized_keys
non sono riuscito a trovare la chiave pubblica dell'utente che pensavo di aver appena aggiunto. Questo è il motivo per cui il mio amico ha continuato a chiedere la password ogni volta che tentava la clonazione.
ho aggiunto il debug alla configurazione Gitosis, con l'aggiunta di queste due linee di gitosis.conf
[gitosis]
loglevel=DEBUG
ho dovuto continuare ad aggiungere e rimuovere utenti al file gitosis.conf in modo che il gancio si sarebbe attivato di nuovo. Il mio registro di debug rivelato
remote: DEBUG:gitosis.gitdaemon:Deny 'syncShare'
remote: DEBUG:gitosis.gitdaemon:Walking 'legacy.d', seeing ['buildtools', 'QA_Dashboard']
remote: DEBUG:gitosis.gitdaemon:Walking 'legacy.d/buildtools', seeing ['.git', 'conf', 'scripts']
remote: Traceback (most recent call last):
etc ...
A-ha! Mentre l'hook eseguiva il "walk" attraverso il repository, aveva trovato una directory .git
sotto legacy.d/buildtools
ed è esattamente dove si è verificato lo assert ext == '.git'
.
Avevo utilizzato il server per archiviare un semplice clone da qualche altro repository. Si noti, un semplice clone, non uno specchio o un repository nudo. Come ogni clone conteneva la directory .git.
Il gancio in Gitosis non sa cosa fare con una directory .git. Pensa che si tratta di un deposito in un nome vuoto e abortisce. Una volta cancellato quel clone, tutto riprese a funzionare bene.
o forse basta riavviare la console – Reda