Skip to content

Commit

Permalink
Adapt to changes in Mercurial 4.6
Browse files Browse the repository at this point in the history
Starting with Mercurial 4.6 repo.lookup() no longer accepts raw hashes
for lookups.
  • Loading branch information
frej committed Jun 10, 2018
1 parent 51d5f89 commit e200cec
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ first time.
System Requirements
-------------------

This project depends on Python 2.7 and the Python mercurial package.
If Python is not installed, install it before proceeding. The
mercurial package can be installed with `pip install mercurial`.
This project depends on Python 2.7 and the Mercurial 4.6 package. If
Python is not installed, install it before proceeding. The Mercurial
package can be installed with `pip install mercurial`.

If you're on Windows, run the following commands in git bash (Git for
Windows).
Expand Down
9 changes: 5 additions & 4 deletions hg-fast-export.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
# License: MIT <http://www.opensource.org/licenses/mit-license.php>

from mercurial import node
from mercurial.scmutil import revsymbol
from hg2git import setup_repo,fixup_user,get_branch,get_changeset
from hg2git import load_cache,save_cache,get_git_sha1,set_default_branch,set_origin_name
from optparse import OptionParser
Expand Down Expand Up @@ -78,7 +79,7 @@ def get_filechanges(repo,revision,parents,mleft):
l,c,r=[],[],[]
for p in parents:
if p<0: continue
mright=repo.changectx(p).manifest()
mright=revsymbol(repo,str(p)).manifest()
l,c,r=split_dict(mleft,mright,l,c,r)
l.sort()
c.sort()
Expand Down Expand Up @@ -210,7 +211,7 @@ def get_branchname(name):
wr(desc)
wr()

ctx=repo.changectx(str(revision))
ctx=revsymbol(repo,str(revision))
man=ctx.manifest()
added,changed,removed,type=[],[],[],''

Expand All @@ -225,7 +226,7 @@ def get_branchname(name):
# later non-merge revision: feed in changed manifest
# if we have exactly one parent, just take the changes from the
# manifest without expensively comparing checksums
f=repo.status(repo.lookup(parents[0]),revnode)[:3]
f=repo.status(parents[0],revnode)[:3]
added,changed,removed=f[1],f[0],f[2]
type='simple delta'
else: # a merge with two parents
Expand Down Expand Up @@ -262,7 +263,7 @@ def export_note(ui,repo,revision,count,authors,encoding,is_first):
if is_first:
wr('from refs/notes/hg^0')
wr('N inline :%d' % (revision+1))
hg_hash=repo.changectx(str(revision)).hex()
hg_hash=revsymbol(repo,str(revision)).hex()
wr('data %d' % (len(hg_hash)))
wr_no_nl(hg_hash)
wr()
Expand Down
13 changes: 12 additions & 1 deletion hg2git.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
# License: MIT <http://www.opensource.org/licenses/mit-license.php>

from mercurial import hg,util,ui,templatefilters
from mercurial import error as hgerror
from mercurial.scmutil import revsymbol,binnode

import re
import os
import sys
Expand Down Expand Up @@ -69,7 +72,15 @@ def get_branch(name):
return name

def get_changeset(ui,repo,revision,authors={},encoding=''):
node=repo.lookup(revision)
# Starting with Mercurial 4.6 lookup no longer accepts raw hashes
# for lookups. Work around it by changing our behaviour depending on
# how it fails
try:
node=repo.lookup(revision)
except hgerror.ProgrammingError:
node=binnode(revsymbol(repo,str(revision))) # We were given a numeric rev
except hgerror.RepoLookupError:
node=revision # We got a raw hash
(manifest,user,(time,timezone),files,desc,extra)=repo.changelog.read(node)
if encoding:
user=user.decode(encoding).encode('utf8')
Expand Down

0 comments on commit e200cec

Please sign in to comment.