Package org.tmatesoft.hg.console

Source Code of org.tmatesoft.hg.console.Bundle$Dump

/*
* Copyright (c) 2011-2012 TMate Software Ltd
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* For information on how to redistribute this software under
* the terms of a license other than GNU General Public License
* contact TMate Software at support@hg4j.com
*/
package org.tmatesoft.hg.console;

import java.io.File;
import java.util.Collections;
import java.util.LinkedList;

import org.tmatesoft.hg.core.HgException;
import org.tmatesoft.hg.core.Nodeid;
import org.tmatesoft.hg.repo.HgBundle;
import org.tmatesoft.hg.repo.HgChangelog;
import org.tmatesoft.hg.repo.HgLookup;
import org.tmatesoft.hg.repo.HgRepository;
import org.tmatesoft.hg.repo.HgBundle.GroupElement;
import org.tmatesoft.hg.repo.HgBundle.Inspector;
import org.tmatesoft.hg.repo.HgChangelog.RawChangeset;
import org.tmatesoft.hg.repo.HgRuntimeException;


/**
* WORK IN PROGRESS, DO NOT USE
*
* @author Artem Tikhomirov
* @author TMate Software Ltd.
*/
public class Bundle {
  public static void main(String[] args) throws Exception {
    Options cmdLineOpts = Options.parse(args, Collections.<String>emptySet());
    final HgRepository hgRepo = cmdLineOpts.findRepository();
    if (hgRepo.isInvalid()) {
      System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation());
      return;
    }
    File bundleFile = new File("/temp/hg/hg-bundle-cpython.tmp");
    HgBundle hgBundle = new HgLookup().loadBundle(bundleFile);
    hgBundle.inspectFiles(new Dump());
    if (Boolean.parseBoolean("true")) {
      return;
    }
    /* pass -R <path-to-repo-with-less-revisions-than-bundle>, e.g. for bundle with tip=168 and -R \temp\hg4j-50 with tip:159
    +Changeset {User: ..., Comment: Integer ....}
    +Changeset {User: ..., Comment: Approach with ...}
    -Changeset {User: ..., Comment: Correct project name...}
    -Changeset {User: ..., Comment: Record possible...}
    */
    hgBundle.changes(hgRepo, new HgChangelog.Inspector() {
      private final HgChangelog changelog = hgRepo.getChangelog();
     
      public void next(int revisionNumber, Nodeid nodeid, RawChangeset cset) throws HgRuntimeException {
        if (changelog.isKnown(nodeid)) {
          System.out.print("+");
        } else {
          System.out.print("-");
        }
        System.out.printf("%d:%s\n%s\n", revisionNumber, nodeid.shortNotation(), cset.toString());
      }
    });
  }

/*
*  TODO EXPLAIN why DataAccess.java on merge from branch has P2 set, and P1 is NULL
*  excerpt from dump('hg-bundle-00') output (node, p1, p2, cs):
src/org/tmatesoft/hg/internal/DataAccess.java
  186af94a2a7ddb34190e63ce556d0fa4dd24add2 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 6f1b88693d48422e98c3eaaa8428ffd4d4d98ca7; patches:1
  be8d0fdc4ff268bf5eb0a9120282ce6e63de1606 186af94a2a7ddb34190e63ce556d0fa4dd24add2 0000000000000000000000000000000000000000 a3a2e5deb320d7412ccbb59bdc44668d445bc4c4; patches:2
  333d7bbd4a80a5d6fb4b44e54e39e290f50dc7f8 be8d0fdc4ff268bf5eb0a9120282ce6e63de1606 0000000000000000000000000000000000000000 e93101b97e4ab0a3f3402ec0e80b6e559237c7c8; patches:1
  56e4523cb8b42630daf70511d73d29e0b375dfa5 0000000000000000000000000000000000000000 333d7bbd4a80a5d6fb4b44e54e39e290f50dc7f8 d5268ca7715b8d96204fc62abc632e8f55761547; patches:6
  f85b6d7ed3cc4b7c6f99444eb0a41b58793cc900 56e4523cb8b42630daf70511d73d29e0b375dfa5 0000000000000000000000000000000000000000 b413b16d10a50cc027f4c38e4df5a9fedd618a79; patches:4
   
  RevlogDump for the file says:
  Index    Offset      Flags     Packed     Actual   Base Rev   Link Rev  Parent1  Parent2     nodeid
   0:    4295032832      0       1109       2465          0         74       -1       -1     186af94a2a7ddb34190e63ce556d0fa4dd24add2
   1:          1109      0         70       2364          0        102        0       -1     be8d0fdc4ff268bf5eb0a9120282ce6e63de1606
   2:          1179      0         63       2365          0        122        1       -1     333d7bbd4a80a5d6fb4b44e54e39e290f50dc7f8
   3:          1242      0        801       3765          0        157       -1        2     56e4523cb8b42630daf70511d73d29e0b375dfa5
   4:          2043      0        130       3658          0        158        3       -1     f85b6d7ed3cc4b7c6f99444eb0a41b58793cc900

  Excerpt from changelog dump:
  155:         30541      0        155        195        155        155      154       -1     a4ec5e08701771b96057522188b16ed289e9e8fe
  156:         30696      0        154        186        155        156      155       -1     643ddec3be36246fc052cf22ece503fa60cafe22
  157:         30850      0        478       1422        155        157      156       53     d5268ca7715b8d96204fc62abc632e8f55761547
  158:         31328      0        247        665        155        158      157       -1     b413b16d10a50cc027f4c38e4df5a9fedd618a79
        

*/

  public static void dump(HgBundle hgBundle) throws HgException, HgRuntimeException {
    Dump dump = new Dump();
    hgBundle.inspectAll(dump);
    System.out.println("Total files:" + dump.names.size());
    for (String s : dump.names) {
      System.out.println(s);
    }
  }

  public static class Dump implements Inspector {
    public final LinkedList<String> names = new LinkedList<String>();

    public void changelogStart() {
      System.out.println("Changelog group");
    }

    public void changelogEnd() {
    }

    public void manifestStart() {
      System.out.println("Manifest group");
    }

    public void manifestEnd() {
    }

    public void fileStart(String name) {
      names.add(name);
      System.out.println(name);
    }

    public void fileEnd(String name) {
    }

    public boolean element(GroupElement ge) {
      System.out.printf("  %s\n", ge.toString());
      return true;
    }
  }
}
TOP

Related Classes of org.tmatesoft.hg.console.Bundle$Dump

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.