From 1f3924e2cb86081a5d8a6292c895f15a2664d0da Mon Sep 17 00:00:00 2001 From: Tommi Virtanen Date: Mon, 3 Sep 2007 21:16:15 -0700 Subject: 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. --- gitosis/run_hook.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'gitosis/run_hook.py') 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) -- cgit v1.2.3