aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2007-12-15 05:58:36 -0800
committerRobin H. Johnson <robbat2@gentoo.org>2007-12-18 01:12:21 -0800
commit204c2e0781ce89fd8abb7f1249920ce90414f9f6 (patch)
tree08ccb761125a0276ae1c88037a59488a89e67ed6
parentPylint cleanups for run_hook.py. (diff)
downloadgitosis-dakkar-204c2e0781ce89fd8abb7f1249920ce90414f9f6.tar.gz
gitosis-dakkar-204c2e0781ce89fd8abb7f1249920ce90414f9f6.tar.bz2
gitosis-dakkar-204c2e0781ce89fd8abb7f1249920ce90414f9f6.zip
Factor out functions with a common errno ignore block.
-rw-r--r--gitosis/gitdaemon.py8
-rw-r--r--gitosis/init.py8
-rw-r--r--gitosis/run_hook.py8
-rw-r--r--gitosis/util.py25
4 files changed, 28 insertions, 21 deletions
diff --git a/gitosis/gitdaemon.py b/gitosis/gitdaemon.py
index e1e0e9a..e529302 100644
--- a/gitosis/gitdaemon.py
+++ b/gitosis/gitdaemon.py
@@ -30,13 +30,7 @@ def allow_export(repopath):
def deny_export(repopath):
"""Remove the ``git-daemon-export-ok`` marker for a given repository."""
path = export_ok_path(repopath)
- try:
- os.unlink(path)
- except OSError, ex:
- if ex.errno == errno.ENOENT:
- pass
- else:
- raise
+ util.unlink(path)
def _extract_reldir(topdir, dirpath):
"""
diff --git a/gitosis/init.py b/gitosis/init.py
index 87ad9a7..71cf074 100644
--- a/gitosis/init.py
+++ b/gitosis/init.py
@@ -52,13 +52,7 @@ def initial_commit(git_dir, cfg, pubkey, user):
def symlink_config(git_dir):
dst = os.path.expanduser('~/.gitosis.conf')
tmp = '%s.%d.tmp' % (dst, os.getpid())
- try:
- os.unlink(tmp)
- except OSError, e:
- if e.errno == errno.ENOENT:
- pass
- else:
- raise
+ util.unlink(tmp)
os.symlink(
os.path.join(git_dir, 'gitosis.conf'),
tmp,
diff --git a/gitosis/run_hook.py b/gitosis/run_hook.py
index 790a5f9..068dbe1 100644
--- a/gitosis/run_hook.py
+++ b/gitosis/run_hook.py
@@ -27,13 +27,7 @@ def post_update(cfg, git_dir):
6. Update the Gitosis SSH keys.
"""
export = os.path.join(git_dir, 'gitosis-export')
- try:
- shutil.rmtree(export)
- except OSError, ex:
- if ex.errno == errno.ENOENT:
- pass
- else:
- raise
+ util.rmtree(export)
repository.export(git_dir=git_dir, path=export)
os.rename(
os.path.join(export, 'gitosis.conf'),
diff --git a/gitosis/util.py b/gitosis/util.py
index ad0989c..4ae3d0c 100644
--- a/gitosis/util.py
+++ b/gitosis/util.py
@@ -3,6 +3,7 @@ Some utility functions for Gitosis
"""
import errno
import os
+import shutil
from ConfigParser import NoSectionError, NoOptionError
def mkdir(newdir, mode=0777):
@@ -17,6 +18,30 @@ def mkdir(newdir, mode=0777):
else:
raise
+def unlink(filename):
+ """
+ Like os.unlink, but non-existing files do not raise an error.
+ """
+ try:
+ os.unlink(filename)
+ except OSError, ex:
+ if ex.errno == errno.ENOENT:
+ pass
+ else:
+ raise
+
+def rmtree(directory):
+ """
+ Like shutil.rmtree, but non-existing trees do not raise an error.
+ """
+ try:
+ shutil.rmtree(directory)
+ except OSError, ex:
+ if ex.errno == errno.ENOENT:
+ pass
+ else:
+ raise
+
def getRepositoryDir(config):
"""
Find the location of the Git repositories.