diff options
author | Lukas Fleischer <lfleischer@archlinux.org> | 2015-06-01 22:58:39 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@archlinux.org> | 2015-06-01 23:24:52 +0200 |
commit | b44411fb5399f75939a57f0ccc8166d06fa8ba6f (patch) | |
tree | eaa23e8c411bbd8f433ac412f6a155d30278b765 /scripts/git-integration/init-repos.py | |
parent | ecfa27e406ebc5ff0d493f040f33426c565ded49 (diff) | |
download | aurweb-b44411fb5399f75939a57f0ccc8166d06fa8ba6f.tar.xz |
Use gitnamespaces for efficient storage
Instead of using one Git repository per package, use a single large
object storage for space efficiency. The refs of the individual package
bases are divided using gitnamespaces(7) which allows for exposing each
namespace as an independent repository easily. Also, git-serve is
modified to create a branch for each package, allowing to browse the
large repository with cgit.
Helped-by: Florian Pritz <bluewind@xinu.at>
Helped-by: Johannes Löthberg <johannes@kyriasis.com>
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
Diffstat (limited to 'scripts/git-integration/init-repos.py')
-rwxr-xr-x | scripts/git-integration/init-repos.py | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/scripts/git-integration/init-repos.py b/scripts/git-integration/init-repos.py deleted file mode 100755 index 5c4fcfe..0000000 --- a/scripts/git-integration/init-repos.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/python3 - -import configparser -import mysql.connector -import os -import pygit2 -import re -import shlex -import sys - -config = configparser.RawConfigParser() -config.read(os.path.dirname(os.path.realpath(__file__)) + "/../../conf/config") - -aur_db_host = config.get('database', 'host') -aur_db_name = config.get('database', 'name') -aur_db_user = config.get('database', 'user') -aur_db_pass = config.get('database', 'password') -aur_db_socket = config.get('database', 'socket') - -repo_base_path = config.get('serve', 'repo-base') -repo_regex = config.get('serve', 'repo-regex') -template_path = config.get('serve', 'template-path') - -def die(msg): - sys.stderr.write("%s\n" % (msg)) - exit(1) - -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) -cur = db.cursor() - -cur.execute("SELECT Name FROM PackageBases") -repos = [row[0] for row in cur] -db.close() - -for repo in repos: - if not re.match(repo_regex, repo): - die('invalid repository name: %s' % (repo)) - -i = 1 -n = len(repos) - -for repo in repos: - print("[%s/%d] %s" % (str(i).rjust(len(str(n))), n, repo)) - - repo_path = repo_base_path + '/' + repo + '.git/' - pygit2.init_repository(repo_path, True, 48, template_path=template_path) - - i += 1 |