From 6e3534430c2280be79e521ce489947a6ed17f451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20G=C3=BCntner?= Date: Sun, 17 Sep 2017 00:50:04 +0200 Subject: [PATCH] prefix all by-name entries --- nixipfs/src/mirror_tarballs.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/nixipfs/src/mirror_tarballs.py b/nixipfs/src/mirror_tarballs.py index 0cfbf7e..0fa9d3b 100644 --- a/nixipfs/src/mirror_tarballs.py +++ b/nixipfs/src/mirror_tarballs.py @@ -6,6 +6,8 @@ import subprocess import threading import shlex +import hashlib +import time from pygit2 import clone_repository, GIT_RESET_HARD, Repository from shutil import copyfile @@ -48,6 +50,7 @@ def check_presence(target_dir, value): os.path.join(target_dir, "sha1", value), os.path.join(target_dir, "sha256", value), os.path.join(target_dir, "sha512", value), + # TODO: glob this os.path.join(target_dir, "by-name", value) ] return [ path for path in paths if os.path.exists(path) ] @@ -83,7 +86,10 @@ def mirror_file(target_dir, path, name, revision): if not os.path.exists(os.path.join(sha512_dir, sha512_32)): os.symlink(os.path.relpath(main_file, start=sha512_dir), os.path.join(sha512_dir, sha512_32)) - by_name_dir = os.path.join(target_dir, "by-name") + # do something semi random to avoid collisions + name_prefix = "{}_{}".format(revision, int(time.time())) + by_name_dir = os.path.join(target_dir, "by-name", name_prefix) + os.makedirs(by_name_dir, exist_ok=True) if not os.path.exists(os.path.join(by_name_dir, name)): os.symlink(os.path.relpath(main_file, start=by_name_dir), os.path.join(by_name_dir, name))