mercurial --> plain text --> mercurial

didier deshommes dfdeshom at gmail.com
Thu Mar 27 11:56:06 CDT 2008


Matt Mackall <mpm <at> selenic.com> writes:

> 
> 
> On Thu, 2008-03-27 at 14:24 +0000, didier deshommes wrote:
> > Hi everyone,
> > Sage (http://www.sagemath.org/) uses hg for its source control and recently a
> > question has come up about the possibility of doing the following:
> > 
> >  (1) export everything in the .hg repo to something (perhaps a ton of
> > stuff) in plain text format,
> >  (2) delete .hg/ directory
> >  (3) do something that recovers the .hg/ directory from the output of (1).
> 
> This will work for the export side:
> 
> #!/usr/bin/env python
> import sys
> from mercurial import revlog, node
> 
> for f in sys.argv[1:]:
>     r = revlog.revlog(open, f)
>     print "file:", f
>     for i in xrange(r.count()):
>         n = r.node(i)
>         p = r.parents(i)
>         d = r.revision(n)
>         print "node:", node.hex(n)
>         print "linkrev:", r.linkrev(n)
>         print "parents:", node.hex(p[0]), node.hex(p[1])
>         print "length:", len(d)
>         print "-start-"
>         print d
>         print "-end-"
> 
> Then you can do something like:
> 
> find .hg/store -name "*.i" | xargs ./dumprevlog > repo.dump 

Hi Matt,
Thanks for the script. we don't have .hg/store, but we don have .hg/data. We
still got this error:
"""
dfdeshom at sage:~/custom/sage/devel/sage-hg$ find .hg/data -name "*.i" | xargs
./dumprevlog > repo.dump
Traceback (most recent call last):
  File "./dumprevlog", line 10, in <module>
    p = r.parents(i)
  File "/home/dfdeshom/bin/hg/lib/python2.5/site-packages/mercurial/revlog.py",
line 528, in parents
    d = self.index[self.rev(node)][5:7]
  File "/home/dfdeshom/bin/hg/lib/python2.5/site-packages/mercurial/revlog.py",
line 522, in rev
    raise LookupError(node, self.indexfile, _('no node'))
mercurial.revlog.LookupError: .hg/data/c_lib/ChangeLog.i at 0: no node

dfdeshom at sage:~/custom/sage/devel/sage-hg$ hg --version
Mercurial Distributed SCM (version 1.0)
"""

Any suggestions?

didier



More information about the Mercurial mailing list