mirror of
https://github.com/frej/fast-export.git
synced 2025-11-01 00:45:47 +01:00
Adapt to changes in Mercurial 4.6
Starting with Mercurial 4.6 repo.lookup() no longer accepts raw hashes for lookups.
This commit is contained in:
@@ -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).
|
||||
|
||||
@@ -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
|
||||
@@ -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()
|
||||
@@ -210,7 +211,7 @@ def export_commit(ui,repo,revision,old_marks,max,count,authors,
|
||||
wr(desc)
|
||||
wr()
|
||||
|
||||
ctx=repo.changectx(str(revision))
|
||||
ctx=revsymbol(repo,str(revision))
|
||||
man=ctx.manifest()
|
||||
added,changed,removed,type=[],[],[],''
|
||||
|
||||
@@ -225,7 +226,7 @@ def export_commit(ui,repo,revision,old_marks,max,count,authors,
|
||||
# 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
|
||||
@@ -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()
|
||||
|
||||
13
hg2git.py
13
hg2git.py
@@ -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
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user