{"thread":{"id":"50857","subject":"[PATCH 0/3] Make hg-to-git contrib script Python 3 compatible","startedAt":"2019-04-01T18:52:21Z","lastAt":"2019-04-01T18:52:35Z","messageCount":4,"participants":["Jelle van der Waa"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"372932","messageId":"20190401185208.17031-1-jelle@vdwaa.nl","threadId":"50857","inReplyTo":null,"subject":"[PATCH 0/3] Make hg-to-git contrib script Python 3 compatible","fromName":"Jelle van der Waa","fromEmail":"jelle@vdwaa.nl","sentAt":"2019-04-01T18:52:05Z","receivedAt":"2019-04-01T18:52:21Z","isPatch":true,"sender":{"key":"jelle@vdwaa.nl","avatar":null},"body":"This patch series makes hg-to-git Python 3 compatible and was tested\nthat it still works with Python 2.7. I'm not sure which Python version\nin minimally supported for these Git contrib scripts.\n\n\n"},{"id":"372933","messageId":"20190401185208.17031-2-jelle@vdwaa.nl","threadId":"50857","inReplyTo":"20190401185208.17031-1-jelle@vdwaa.nl","subject":"[PATCH 1/3] contrib: hg-to-git: make print python 3 compatible","fromName":"Jelle van der Waa","fromEmail":"jelle@vdwaa.nl","sentAt":"2019-04-01T18:52:06Z","receivedAt":"2019-04-01T18:52:31Z","isPatch":true,"sender":{"key":"jelle@vdwaa.nl","avatar":null},"body":"From: Jelle van der Waa <jelle@vdwaa.nl>\n\nPython 3 made print a function, keep Python 2 compatibility with a\nfuture import of print_function.\n\nSigned-off-by: Jelle van der Waa <jelle@vdwaa.nl>\n---\n contrib/hg-to-git/hg-to-git.py | 47 +++++++++++++++++-----------------\n 1 file changed, 24 insertions(+), 23 deletions(-)\n\ndiff --git a/contrib/hg-to-git/hg-to-git.py b/contrib/hg-to-git/hg-to-git.py\nindex de3f81667e..f898d6f23e 100755\n--- a/contrib/hg-to-git/hg-to-git.py\n+++ b/contrib/hg-to-git/hg-to-git.py\n@@ -17,6 +17,7 @@\n     You should have received a copy of the GNU General Public License\n     along with this program; if not, see <http://www.gnu.org/licenses/>.\n \"\"\"\n+from __future__ import print_function\n \n import os, os.path, sys\n import tempfile, pickle, getopt\n@@ -42,7 +43,7 @@\n \n def usage():\n \n-        print \"\"\"\\\n+        print(\"\"\"\\\n %s: [OPTIONS] <hgprj>\n \n options:\n@@ -54,7 +55,7 @@ def usage():\n \n required:\n     hgprj:  name of the HG project to import (directory)\n-\"\"\" % sys.argv[0]\n+\"\"\" % sys.argv[0])\n \n #------------------------------------------------------------------------------\n \n@@ -104,22 +105,22 @@ def getgitenv(user, date):\n if state:\n     if os.path.exists(state):\n         if verbose:\n-            print 'State does exist, reading'\n+            print('State does exist, reading')\n         f = open(state, 'r')\n         hgvers = pickle.load(f)\n     else:\n-        print 'State does not exist, first run'\n+        print('State does not exist, first run')\n \n sock = os.popen('hg tip --template \"{rev}\"')\n tip = sock.read()\n if sock.close():\n     sys.exit(1)\n if verbose:\n-    print 'tip is', tip\n+    print('tip is', tip)\n \n # Calculate the branches\n if verbose:\n-    print 'analysing the branches...'\n+    print('analysing the branches...')\n hgchildren[\"0\"] = ()\n hgparents[\"0\"] = (None, None)\n hgbranch[\"0\"] = \"master\"\n@@ -155,7 +156,7 @@ def getgitenv(user, date):\n             hgbranch[str(cset)] = \"branch-\" + str(cset)\n \n if not hgvers.has_key(\"0\"):\n-    print 'creating repository'\n+    print('creating repository')\n     os.system('git init')\n \n # loop through every hg changeset\n@@ -180,27 +181,27 @@ def getgitenv(user, date):\n     os.write(fdcomment, csetcomment)\n     os.close(fdcomment)\n \n-    print '-----------------------------------------'\n-    print 'cset:', cset\n-    print 'branch:', hgbranch[str(cset)]\n-    print 'user:', user\n-    print 'date:', date\n-    print 'comment:', csetcomment\n+    print('-----------------------------------------')\n+    print('cset:', cset)\n+    print('branch:', hgbranch[str(cset)])\n+    print('user:', user)\n+    print('date:', date)\n+    print('comment:', csetcomment)\n     if parent:\n-\tprint 'parent:', parent\n+        print('parent:', parent)\n     if mparent:\n-        print 'mparent:', mparent\n+        print('mparent:', mparent)\n     if tag:\n-        print 'tag:', tag\n-    print '-----------------------------------------'\n+        print('tag:', tag)\n+    print('-----------------------------------------')\n \n     # checkout the parent if necessary\n     if cset != 0:\n         if hgbranch[str(cset)] == \"branch-\" + str(cset):\n-            print 'creating new branch', hgbranch[str(cset)]\n+            print('creating new branch', hgbranch[str(cset)])\n             os.system('git checkout -b %s %s' % (hgbranch[str(cset)], hgvers[parent]))\n         else:\n-            print 'checking out branch', hgbranch[str(cset)]\n+            print('checking out branch', hgbranch[str(cset)])\n             os.system('git checkout %s' % hgbranch[str(cset)])\n \n     # merge\n@@ -209,7 +210,7 @@ def getgitenv(user, date):\n             otherbranch = hgbranch[mparent]\n         else:\n             otherbranch = hgbranch[parent]\n-        print 'merging', otherbranch, 'into', hgbranch[str(cset)]\n+        print('merging', otherbranch, 'into', hgbranch[str(cset)])\n         os.system(getgitenv(user, date) + 'git merge --no-commit -s ours \"\" %s %s' % (hgbranch[str(cset)], otherbranch))\n \n     # remove everything except .git and .hg directories\n@@ -233,12 +234,12 @@ def getgitenv(user, date):\n \n     # delete branch if not used anymore...\n     if mparent and len(hgchildren[str(cset)]):\n-        print \"Deleting unused branch:\", otherbranch\n+        print(\"Deleting unused branch:\", otherbranch)\n         os.system('git branch -d %s' % otherbranch)\n \n     # retrieve and record the version\n     vvv = os.popen('git show --quiet --pretty=format:%H').read()\n-    print 'record', cset, '->', vvv\n+    print('record', cset, '->', vvv)\n     hgvers[str(cset)] = vvv\n \n if hgnewcsets >= opt_nrepack and opt_nrepack != -1:\n@@ -247,7 +248,7 @@ def getgitenv(user, date):\n # write the state for incrementals\n if state:\n     if verbose:\n-        print 'Writing state'\n+        print('Writing state')\n     f = open(state, 'w')\n     pickle.dump(hgvers, f)\n \n-- \n2.21.0\n\n"},{"id":"372934","messageId":"20190401185208.17031-4-jelle@vdwaa.nl","threadId":"50857","inReplyTo":"20190401185208.17031-1-jelle@vdwaa.nl","subject":"[PATCH 3/3] contrib: hg-to-git: convert data to bytes for os.write","fromName":"Jelle van der Waa","fromEmail":"jelle@vdwaa.nl","sentAt":"2019-04-01T18:52:08Z","receivedAt":"2019-04-01T18:52:32Z","isPatch":true,"sender":{"key":"jelle@vdwaa.nl","avatar":null},"body":"From: Jelle van der Waa <jelle@vdwaa.nl>\n\nIn Python 3 os.write wants bytes instead of a string, decode the str in\nto bytes.\n\nSigned-off-by: Jelle van der Waa <jelle@vdwaa.nl>\n---\n contrib/hg-to-git/hg-to-git.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/contrib/hg-to-git/hg-to-git.py b/contrib/hg-to-git/hg-to-git.py\nindex d504624c63..26c7300011 100755\n--- a/contrib/hg-to-git/hg-to-git.py\n+++ b/contrib/hg-to-git/hg-to-git.py\n@@ -178,7 +178,7 @@ def getgitenv(user, date):\n     #get comment\n     (fdcomment, filecomment) = tempfile.mkstemp()\n     csetcomment = os.popen('hg log -r %d --template \"{desc}\"' % cset).read().strip()\n-    os.write(fdcomment, csetcomment)\n+    os.write(fdcomment, csetcomment.encode())\n     os.close(fdcomment)\n \n     print('-----------------------------------------')\n-- \n2.21.0\n\n"},{"id":"372935","messageId":"20190401185208.17031-3-jelle@vdwaa.nl","threadId":"50857","inReplyTo":"20190401185208.17031-1-jelle@vdwaa.nl","subject":"[PATCH 2/3] contrib: hg-to-git: has_key is removed in Python 3","fromName":"Jelle van der Waa","fromEmail":"jelle@vdwaa.nl","sentAt":"2019-04-01T18:52:07Z","receivedAt":"2019-04-01T18:52:35Z","isPatch":true,"sender":{"key":"jelle@vdwaa.nl","avatar":null},"body":"From: Jelle van der Waa <jelle@vdwaa.nl>\n\nhas_key was deprecated in Python 2 and finally removed in Python 3 in\nfavor of 'foo' in bar.\n\nSigned-off-by: Jelle van der Waa <jelle@vdwaa.nl>\n---\n contrib/hg-to-git/hg-to-git.py | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/contrib/hg-to-git/hg-to-git.py b/contrib/hg-to-git/hg-to-git.py\nindex f898d6f23e..d504624c63 100755\n--- a/contrib/hg-to-git/hg-to-git.py\n+++ b/contrib/hg-to-git/hg-to-git.py\n@@ -155,7 +155,7 @@ def getgitenv(user, date):\n         else:\n             hgbranch[str(cset)] = \"branch-\" + str(cset)\n \n-if not hgvers.has_key(\"0\"):\n+if \"0\" not in hgvers:\n     print('creating repository')\n     os.system('git init')\n \n@@ -163,7 +163,7 @@ def getgitenv(user, date):\n for cset in range(int(tip) + 1):\n \n     # incremental, already seen\n-    if hgvers.has_key(str(cset)):\n+    if str(cset) in hgvers:\n         continue\n     hgnewcsets += 1\n \n-- \n2.21.0\n\n"}]}