Hervé Beraud <herveberaud.pro@xxxxxxxxx> writes: > Signed-off-by: Hervé Beraud <herveberaud.pro@xxxxxxxxx> > --- > contrib/hg-to-git/hg-to-git.py | 52 +++++++++++++++++++++--------------------- > 1 file changed, 26 insertions(+), 26 deletions(-) I think you shrunk the scope of the change, but I feel that it is still a bit under-explained. Let me try to write a proposed commit log message and ask you to see if I understood the idea behind the changes correctly: Rewrite features that are no longer supported (or recommended) in Python 3 in the script so that it can be used with both Python 2 and 3, namely: - print is not a statement; use print() function instead. - dict.has_key(key) is no more; use "key in dict" instead. - map(lambda ..., collection) is not liked; use list comprehension. Hopefully this would also serve as an illustration of the kind of things we want in our log message. I am not sure about the change from map(lambda ...) to list comprehension, though. Not that I have a preference for or against (I am not a Python person), but I do not know if this is a change necessary to run with Python 3 or if it is merely more preferred to use list comprehension. Thanks. > diff --git a/contrib/hg-to-git/hg-to-git.py b/contrib/hg-to-git/hg-to-git.py > index de3f81667ed97..8fa7698df5c20 100755 > --- a/contrib/hg-to-git/hg-to-git.py > +++ b/contrib/hg-to-git/hg-to-git.py > @@ -42,7 +42,7 @@ > > def usage(): > > - print """\ > + print("""\ > %s: [OPTIONS] <hgprj> > > options: > @@ -54,7 +54,7 @@ def usage(): > > required: > hgprj: name of the HG project to import (directory) > -""" % sys.argv[0] > +""" % sys.argv[0]) > > #------------------------------------------------------------------------------ > > @@ -104,29 +104,29 @@ def getgitenv(user, date): > if state: > if os.path.exists(state): > if verbose: > - print 'State does exist, reading' > + print('State does exist, reading') > f = open(state, 'r') > hgvers = pickle.load(f) > else: > - print 'State does not exist, first run' > + print('State does not exist, first run') > > sock = os.popen('hg tip --template "{rev}"') > tip = sock.read() > if sock.close(): > sys.exit(1) > if verbose: > - print 'tip is', tip > + print('tip is', tip) > > # Calculate the branches > if verbose: > - print 'analysing the branches...' > + print('analysing the branches...') > hgchildren["0"] = () > hgparents["0"] = (None, None) > hgbranch["0"] = "master" > for cset in range(1, int(tip) + 1): > hgchildren[str(cset)] = () > prnts = os.popen('hg log -r %d --template "{parents}"' % cset).read().strip().split(' ') > - prnts = map(lambda x: x[:x.find(':')], prnts) > + prnts = [x[:x.find(':')] for x in prnts] > if prnts[0] != '': > parent = prnts[0].strip() > else: > @@ -154,15 +154,15 @@ def getgitenv(user, date): > else: > hgbranch[str(cset)] = "branch-" + str(cset) > > -if not hgvers.has_key("0"): > - print 'creating repository' > +if "0" not in hgvers: > + print('creating repository') > os.system('git init') > > # loop through every hg changeset > for cset in range(int(tip) + 1): > > # incremental, already seen > - if hgvers.has_key(str(cset)): > + if str(cset) in hgvers: > continue > hgnewcsets += 1 > > @@ -180,27 +180,27 @@ def getgitenv(user, date): > os.write(fdcomment, csetcomment) > os.close(fdcomment) > > - print '-----------------------------------------' > - print 'cset:', cset > - print 'branch:', hgbranch[str(cset)] > - print 'user:', user > - print 'date:', date > - print 'comment:', csetcomment > + print('-----------------------------------------') > + print('cset:', cset) > + print('branch:', hgbranch[str(cset)]) > + print('user:', user) > + print('date:', date) > + print('comment:', csetcomment) > if parent: > - print 'parent:', parent > + print('parent:', parent) > if mparent: > - print 'mparent:', mparent > + print('mparent:', mparent) > if tag: > - print 'tag:', tag > - print '-----------------------------------------' > + print('tag:', tag) > + print('-----------------------------------------') > > # checkout the parent if necessary > if cset != 0: > if hgbranch[str(cset)] == "branch-" + str(cset): > - print 'creating new branch', hgbranch[str(cset)] > + print('creating new branch', hgbranch[str(cset)]) > os.system('git checkout -b %s %s' % (hgbranch[str(cset)], hgvers[parent])) > else: > - print 'checking out branch', hgbranch[str(cset)] > + print('checking out branch', hgbranch[str(cset)]) > os.system('git checkout %s' % hgbranch[str(cset)]) > > # merge > @@ -209,7 +209,7 @@ def getgitenv(user, date): > otherbranch = hgbranch[mparent] > else: > otherbranch = hgbranch[parent] > - print 'merging', otherbranch, 'into', hgbranch[str(cset)] > + print('merging', otherbranch, 'into', hgbranch[str(cset)]) > os.system(getgitenv(user, date) + 'git merge --no-commit -s ours "" %s %s' % (hgbranch[str(cset)], otherbranch)) > > # remove everything except .git and .hg directories > @@ -233,12 +233,12 @@ def getgitenv(user, date): > > # delete branch if not used anymore... > if mparent and len(hgchildren[str(cset)]): > - print "Deleting unused branch:", otherbranch > + print("Deleting unused branch:", otherbranch) > os.system('git branch -d %s' % otherbranch) > > # retrieve and record the version > vvv = os.popen('git show --quiet --pretty=format:%H').read() > - print 'record', cset, '->', vvv > + print('record', cset, '->', vvv) > hgvers[str(cset)] = vvv > > if hgnewcsets >= opt_nrepack and opt_nrepack != -1: > @@ -247,7 +247,7 @@ def getgitenv(user, date): > # write the state for incrementals > if state: > if verbose: > - print 'Writing state' > + print('Writing state') > f = open(state, 'w') > pickle.dump(hgvers, f) > > > -- > https://github.com/git/git/pull/458