aboutsummaryrefslogtreecommitdiff
path: root/gitosis/run_hook.py
diff options
context:
space:
mode:
authorTommi Virtanen <tv@eagain.net>2007-09-03 21:16:15 -0700
committerTommi Virtanen <tv@eagain.net>2007-09-03 21:16:15 -0700
commit1f3924e2cb86081a5d8a6292c895f15a2664d0da (patch)
tree4a658f8db30b4423ca7dc6318870dd021968ac31 /gitosis/run_hook.py
parentMake gitosis-init ignore error from non-existent config file. (diff)
downloadgitosis-dakkar-1f3924e2cb86081a5d8a6292c895f15a2664d0da.tar.gz
gitosis-dakkar-1f3924e2cb86081a5d8a6292c895f15a2664d0da.tar.bz2
gitosis-dakkar-1f3924e2cb86081a5d8a6292c895f15a2664d0da.zip
Make gitosis-init call run_hook.post_update directly.
This avoids complexity where failing to read the config file in gitosis-run-hook is non-fatal, but only on the first run. gitosis-init will take care of config file reading and just pass a RawConfigParser instance to run_hook.post_update.
Diffstat (limited to 'gitosis/run_hook.py')
-rw-r--r--gitosis/run_hook.py23
1 files changed, 14 insertions, 9 deletions
diff --git a/gitosis/run_hook.py b/gitosis/run_hook.py
index de5076e..d249db1 100644
--- a/gitosis/run_hook.py
+++ b/gitosis/run_hook.py
@@ -13,20 +13,27 @@ from gitosis import ssh
from gitosis import gitweb
from gitosis import app
-def post_update(cfg):
+def post_update(cfg, git_dir):
+ export = os.path.join(git_dir, 'gitosis-export')
try:
- shutil.rmtree('gitosis-export')
+ shutil.rmtree(export)
except OSError, e:
if e.errno == errno.ENOENT:
pass
else:
raise
- repository.export(git_dir='.', path='gitosis-export')
- os.rename('gitosis-export/gitosis.conf', 'gitosis.conf')
- gitweb.generate(config=cfg, path='projects.list')
+ repository.export(git_dir=git_dir, path=export)
+ os.rename(
+ os.path.join(export, 'gitosis.conf'),
+ os.path.join(export, '..', 'gitosis.conf'),
+ )
+ gitweb.generate(
+ config=cfg,
+ path=os.path.join(git_dir, 'projects.list'),
+ )
ssh.writeAuthorizedKeys(
path=os.path.expanduser('~/.ssh/authorized_keys'),
- keydir='gitosis-export/keydir',
+ keydir=os.path.join(export, 'keydir'),
)
class Main(app.App):
@@ -50,12 +57,10 @@ class Main(app.App):
if git_dir is None:
log.error('Must have GIT_DIR set in enviroment')
sys.exit(1)
- os.chdir(git_dir)
- os.environ['GIT_DIR'] = '.'
if hook == 'post-update':
log.info('Running hook %s', hook)
- post_update(cfg)
+ post_update(cfg, git_dir)
log.info('Done.')
else:
log.warning('Ignoring unknown hook: %r', hook)