contrib/convert-repo
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Mon, 14 Jul 2014 23:33:59 +0900
branchstable
changeset 21868 3420346174b1
parent 6365 1d3eb332f3cb
permissions -rwxr-xr-x
convert: detect removal of ".gitmodules" at git source revisions correctly Before this patch, all operations applied on ".gitmodules" at git source revisions are treated as modification, even if they are actually removal of it. If removal of ".gitmodules" is treated as modification unexpectedly, "hg convert" is aborted by the exception raised in "retrievegitmodules()" for ".gitmodules" at the git source revision removing it, because that revision doesn't have any information of ".gitmodules". This patch detects removal of ".gitmodules" at git source revisions correctly. If ".gitmodules" is removed at the git source revision, this patch records "hex(nullid)" as the contents hash value for ".hgsub" and ".hgsubstate" at the destination revision. This patch makes "getfile()" raise IOError also for ".hgstatus" and ".hgsubstate" if the contents hash value is "hex(nullid)", and this tells removal of ".hgstatus" and ".hgsubstate" at the destination revision to "localrepository.commitctx()" correctly. For files other than ".hgstatus" and ".hgsubstate", checking the contents hash value in "getfile()" may be redundant, because "catfile()" for them also does so. But this patch chooses writing it only once at the beginning of "getfile()", to avoid writing same code twice both for ".hgsub" and ".hgsubstate" separately.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4514
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     1
#!/usr/bin/env python
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     2
#
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     3
# Wrapper script around the convert.py hgext extension
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     4
# for foreign SCM conversion to mercurial format.
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     5
#
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     6
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     7
import sys
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     8
from mercurial import ui, fancyopts
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
     9
from hgext import convert
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    10
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    11
# Options extracted from the cmdtable
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    12
func, options, help = convert.cmdtable['convert']
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    13
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    14
# An ui instance
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    15
u = ui.ui()
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    16
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    17
opts = {}
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    18
args = []
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    19
try:
6365
1d3eb332f3cb convertrepo: make it work with refactored convert extension
Patrick Mezard <pmezard@gmail.com>
parents: 4514
diff changeset
    20
    args = list(fancyopts.fancyopts(sys.argv[1:], options, opts))
1d3eb332f3cb convertrepo: make it work with refactored convert extension
Patrick Mezard <pmezard@gmail.com>
parents: 4514
diff changeset
    21
    args += [None]*(3 - len(args))
1d3eb332f3cb convertrepo: make it work with refactored convert extension
Patrick Mezard <pmezard@gmail.com>
parents: 4514
diff changeset
    22
    src, dest, revmapfile = args
1d3eb332f3cb convertrepo: make it work with refactored convert extension
Patrick Mezard <pmezard@gmail.com>
parents: 4514
diff changeset
    23
except (fancyopts.getopt.GetoptError, ValueError), inst:
1d3eb332f3cb convertrepo: make it work with refactored convert extension
Patrick Mezard <pmezard@gmail.com>
parents: 4514
diff changeset
    24
    u.warn('Usage:\n%s\n' % help)
4514
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    25
    sys.exit(-1)
ec889780f28b Add a wrapper script for convert extension
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    26
6365
1d3eb332f3cb convertrepo: make it work with refactored convert extension
Patrick Mezard <pmezard@gmail.com>
parents: 4514
diff changeset
    27
convert.convert(u, src, dest, revmapfile, **opts)