def finalize(self):
savedir = os.getcwd()
os.chdir(self.repopath)
- os.system("git update-server-info")
+ self.system("git update-server-info")
os.chdir(savedir)
if os.environ.has_key('GIT_DIR'):
del os.environ['GIT_DIR']
+ def system(self, cmd):
+ # Version of os.system() that raises an exception if the command
+ # fails to run or returns with bad exit code.
+ r = os.system(cmd)
+ if r != 0:
+ raise Exception("Failed to execute \"%s\": %s" % (cmd, r))
+ return 0
+
class SyncMethodCvs(SyncMethod):
# Synchronize using "git cvsimport", which deals with remove CVS repositories
def normalsync(self):
# Not initial sync, so just do a sync
- os.system("git cvsimport -v -d %s -r master -C %s -i -k %s" % (
+ self.system("git cvsimport -v -d %s -r master -C %s -i -k %s" % (
# CVS url
self.remoteurl,
# New repo
rsyncpath = "%s/rsyncsrc/%s" % (self.conf.get("paths", "githome"), self.name)
# First, rsync the cvs repository
- os.system("rsync -azCH --delete %s %s" % (
+ self.system("rsync -azCH --delete %s %s" % (
self.remoteurl,
rsyncpath
))
os.chdir("%s/sw/fromcvs" % self.conf.get("paths", "githome"))
# Perform Magic!
- os.system("ruby togit.rb %s %s %s" % (
+ self.system("ruby togit.rb %s %s %s" % (
rsyncpath,
self.remotemodule,
self.repopath,
# Repack changes
os.chdir(self.repopath)
- os.system("git repack -f -d")
+ self.system("git repack -f -d")
# Restore working dir
os.chdir(savedir)
class SyncMethodGit(SyncMethod):
# Sync with a remote git repository.
def initialsync(self):
- os.system("git clone --no-checkout --bare %s %s" % (
+ self.system("git clone --no-checkout --bare %s %s" % (
self.remoteurl,
self.repopath
))
savedir = os.getcwd()
os.chdir(self.repopath)
del os.environ['GIT_DIR']
- os.system("git fetch %s" % self.remoteurl)
+ self.system("git fetch %s" % self.remoteurl)
os.chdir(savedir)