summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@archlinux.org>2015-06-11 17:52:42 +0200
committerLukas Fleischer <lfleischer@archlinux.org>2015-06-11 17:56:51 +0200
commit5225dfef4840de147aed261366df5426d1ea5301 (patch)
treedf8298b6feef2ca5a4588010c320e3fe96198959
parenta0f3060f234418993aaeee0962cfdbd25f37b940 (diff)
downloadaurweb-5225dfef4840de147aed261366df5426d1ea5301.tar.xz
git-update: Allow non-fast-forwards for TUs
Although we theoretically never want to lose history, there may be rare occasions when a forced push is required (e.g. if illegal data is pushed). Allow Trusted Users and Developers to perform non-fast-forward pushes. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
-rwxr-xr-xgit-interface/git-update.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/git-interface/git-update.py b/git-interface/git-update.py
index 3f6cfc1..d87fac7 100755
--- a/git-interface/git-update.py
+++ b/git-interface/git-update.py
@@ -179,23 +179,26 @@ if refname != "refs/heads/master":
repo = pygit2.Repository(repo_path)
+db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
+ passwd=aur_db_pass, db=aur_db_name,
+ unix_socket=aur_db_socket, buffered=True)
+cur = db.cursor()
+
# Detect and deny non-fast-forwards.
if sha1_old != "0000000000000000000000000000000000000000":
walker = repo.walk(sha1_old, pygit2.GIT_SORT_TOPOLOGICAL)
walker.hide(sha1_new)
if next(walker, None) != None:
- die("denying non-fast-forward (you should pull first)")
+ cur.execute("SELECT AccountTypeID FROM Users WHERE UserName = %s ",
+ [user])
+ if cur.fetchone()[0] == 1:
+ die("denying non-fast-forward (you should pull first)")
# Prepare the walker that validates new commits.
walker = repo.walk(sha1_new, pygit2.GIT_SORT_TOPOLOGICAL)
if sha1_old != "0000000000000000000000000000000000000000":
walker.hide(sha1_old)
-db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
- passwd=aur_db_pass, db=aur_db_name,
- unix_socket=aur_db_socket, buffered=True)
-cur = db.cursor()
-
cur.execute("SELECT Name FROM PackageBlacklist")
blacklist = [row[0] for row in cur.fetchall()]