]> git.lizzy.rs Git - minetest.git/commitdiff
Utility script to help with Weblate commit import
authorsfan5 <sfan5@live.de>
Fri, 3 Apr 2020 21:20:11 +0000 (23:20 +0200)
committersfan5 <sfan5@live.de>
Fri, 3 Apr 2020 21:26:07 +0000 (23:26 +0200)
util/reorder_translation_commits.py [new file with mode: 0755]

diff --git a/util/reorder_translation_commits.py b/util/reorder_translation_commits.py
new file mode 100755 (executable)
index 0000000..465cf0b
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+import sys
+import subprocess
+
+ret = subprocess.run(["git", "config", "rebase.instructionFormat"], capture_output=True)
+if ret.returncode != 0 or ret.stdout.decode('ascii').strip() != "(%an <%ae>) %s":
+       print("Git is using the wrong rebase instruction format, reconfigure it.")
+       exit(1)
+
+try:
+       f = open(".git/rebase-merge/git-rebase-todo", "r")
+except:
+       print("Initiate the rebase first!")
+       exit(1)
+lines = list(s.strip("\r\n") for s in f.readlines())
+f.close()
+
+for i in range(len(lines)):
+       line = lines[i]
+       if line.startswith("#") or " Translated using Weblate " not in line: continue
+       pos = line.rfind("(")
+       lang = line[pos:]
+       author = line[line.find("("):line.rfind(")", 0, pos)+1]
+       # try to grab the next commit by the same author for the same language
+       for j in range(i+1, len(lines)):
+               if lines[j].startswith("#") or not lines[j].endswith(lang): continue
+               if author in lines[j]:
+                       lines.insert(i+1, "f " + lines.pop(j)[5:])
+               break
+
+with open(".git/rebase-merge/git-rebase-todo", "w") as f:
+       f.write("\n".join(lines) + "\n")
+print("You can now continue with the rebase.")