X-Git-Url: https://git.ralfj.de/git-mirror.git/blobdiff_plain/6290489e9a0359df09c7f09650ffb02f86bceb14..91149b3b918cfe8d95e261ad8ce7607606e98ba3:/git_mirror.py diff --git a/git_mirror.py b/git_mirror.py index b4b4964..23f6545 100644 --- a/git_mirror.py +++ b/git_mirror.py @@ -84,7 +84,7 @@ class Repo: self.name = name self.local = conf['local'] self.owner = conf['owner'] # email address to notify in case of problems - self.hmac_secret = conf['hmac-secret'].encode('utf-8') + self.hmac_secret = conf['hmac-secret'].encode('utf-8') if 'hmac-secret' in conf else None self.deploy_key = conf['deploy-key'] # the SSH ky used for authenticating against remote hosts self.mirrors = {} # maps mirrors to their URLs mirror_prefix = 'mirror-' @@ -97,6 +97,7 @@ class Repo: send_mail("git-mirror {}".format(self.name), msg, recipients = [self.owner], sender = mail_sender) def compute_hmac(self, data): + assert self.hmac_secret is not None h = hmac.new(self.hmac_secret, digestmod = hashlib.sha1) h.update(data) return h.hexdigest() @@ -154,7 +155,8 @@ class Repo: if len(local_state): raise Exception("Something went wrong getting the local state of {}.".format(ref)) local_sha = git_nullsha - assert local_sha in (oldsha, newsha), "Someone lied about the old SHA." + # some sanity checking, but deal gracefully with new branches appearing + assert local_sha in (git_nullsha, oldsha, newsha), "Someone lied about the old SHA: Local ({}) is neither old ({}) nor new ({})".format(local_sha, oldsha, newsha) # if we are already at newsha locally, we also ran the local hooks, so we do not have to do anything if local_sha == newsha: return "Local repository is already up-to-date."