# HG changeset patch # User Artem Tikhomirov # Date 1294886470 -3600 # Node ID 42585c7cd6416b879871d3ac71ec378e7c3ce807 # Parent 346b66add79d881dcc3d1e46f35ce6972b64e6ad Initial dump of a bundle diff -r 346b66add79d -r 42585c7cd641 src/com/tmate/hgkit/console/Bundle.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/com/tmate/hgkit/console/Bundle.java Thu Jan 13 03:41:10 2011 +0100 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2011 Artem Tikhomirov + */ +package com.tmate.hgkit.console; + +import java.io.File; + +import com.tmate.hgkit.fs.DataAccess; +import com.tmate.hgkit.fs.DataAccessProvider; +import com.tmate.hgkit.ll.Nodeid; + +/** + * @see http://mercurial.selenic.com/wiki/BundleFormat + * + * @author artem + */ +public class Bundle { + + public static void main(String[] args) throws Exception { + File bundleFile = new File("/temp/hg/hg-bundle-a78c980749e3.tmp"); + DataAccessProvider dap = new DataAccessProvider(); + DataAccess da = dap.create(bundleFile); + while (!da.isEmpty()) { + int len = da.readInt(); + while (len > 4) { + byte[] nb = new byte[20]; + da.readBytes(nb, 0, 20); + Nodeid node = new Nodeid(nb, true); + da.readBytes(nb, 0, 20); + Nodeid p1 = new Nodeid(nb, true); + da.readBytes(nb, 0, 20); + Nodeid p2 = new Nodeid(nb, true); + da.readBytes(nb, 0, 20); + Nodeid cs = new Nodeid(nb, true); + da.skip(len - 84); + System.out.printf("%6d %s %s %s %s\n", len, node, p1, p2, cs); + len = da.isEmpty() ? 0 : da.readInt(); + } + System.out.println("Group done"); + } + } +}