]> git.wh0rd.org - home.git/commitdiff
git-repack: make it python3-only
authorMike Frysinger <vapier@gentoo.org>
Mon, 2 Dec 2019 21:50:58 +0000 (16:50 -0500)
committerMike Frysinger <vapier@gentoo.org>
Mon, 2 Dec 2019 21:52:32 +0000 (16:52 -0500)
.bin/git-repack

index eb0061b1a7d181090e72cd558f2185490440a31b..82f8f17ced5c86d72f726eba77fc430b0beae739 100755 (executable)
@@ -1,4 +1,7 @@
-#!/usr/bin/python
+#!/usr/bin/python3
+
+# pylint: disable=fixme,invalid-name
+# pylint: disable=too-many-branches,too-many-locals,too-many-statements
 
 """Repack git repos fully the way I like them."""
 
@@ -67,7 +70,8 @@ def find_temp_dir():
 def readfile(path):
     """Read |path| and return its data"""
     if os.path.isfile(path):
-        return open(path).read()
+        with open(path) as fp:
+            return fp.read()
     return ''
 
 
@@ -97,7 +101,7 @@ def is_packed(path):
     """See if the git repo is already packed"""
     obj_path = os.path.join(path, 'objects')
     paths = set(os.listdir(obj_path))
-    if {'info', 'pack'} != paths and {'pack'} != paths:
+    if paths not in ({'info', 'pack'}, {'pack'}):
         return False
     packs = os.listdir(os.path.join(obj_path, 'pack'))
     if len(packs) != 2:
@@ -147,7 +151,7 @@ def repack(path):
         packed_refs = readfile(os.path.join(path, 'packed-refs'))
         if os.path.exists(origin_path) or 'refs/remotes/origin/' in packed_refs:
             cmd = ['git', '--git-dir', path, 'remote', 'prune', 'origin']
-            subprocess.check_call(cmd, cwd='/')
+            subprocess.run(cmd, cwd='/', check=True)
 
         clean_packs(path)
 
@@ -164,36 +168,37 @@ def repack(path):
 
         cmd = ['git', '--git-dir', rundir, 'reflog', 'expire', '--all', '--stale-fix']
         print('Cleaning reflog: %s' % ' '.join(cmd))
-        subprocess.check_call(cmd, cwd='/')
+        subprocess.run(cmd, cwd='/', check=True)
 
         # This also packs refs/tags for us.
         cmd = ['git', '--git-dir', rundir, 'gc', '--aggressive', '--prune=all']
         print('Repacking git repo: %s' % ' '.join(cmd))
-        subprocess.check_call(cmd, cwd='/')
+        subprocess.run(cmd, cwd='/', check=True)
 
         # Clean empty dirs.
         cmd = ['find', rundir, '-depth', '-type', 'd', '-exec', 'rmdir', '{}', '+']
-        subprocess.call(cmd, stderr=open('/dev/null', 'w'))
+        subprocess.call(cmd, stderr=subprocess.DEVNULL)
 
         # There's a few dirs we need to exist even if they're empty.
         refdir = os.path.join(rundir, 'refs')
-        if not os.path.isdir(refdir):
-            os.mkdir(refdir)
+        os.makedirs(refdir, exist_ok=True)
 
         if tmpdir:
             cmd = ['rsync', '-a', '--delete', tmpdir + '/', path + '/']
             print('Syncing back git repo: %s' % ' '.join(cmd))
-            subprocess.check_call(cmd, cwd='/')
+            subprocess.run(cmd, cwd='/', check=True)
             cmd = ['find', path + '/', '-exec', 'chmod', 'u+rw', '{}', '+']
-            subprocess.check_call(cmd, cwd='/')
+            subprocess.run(cmd, cwd='/', check=True)
 
     finally:
         if grafts:
-            open(graft_file, 'w').write(grafts)
+            with open(graft_file, 'w') as fp:
+                fp.write(grafts)
         if alts:
-            open(alt_file, 'w').write(alts)
-        if tmpdir and os.path.exists(tmpdir):
-            shutil.rmtree(tmpdir)
+            with open(alt_file, 'w') as fp:
+                fp.write(alts)
+        if tmpdir:
+            shutil.rmtree(tmpdir, ignore_errors=True)
 
 
 def get_parser():