comparison src/org/tmatesoft/hg/internal/BundleGenerator.java @ 670:52af7f62e731

AIOOBE in BundleGenerator.ChunkGenerator.iterate when there are no outgoing changes on push
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Fri, 12 Jul 2013 15:27:43 +0200
parents d25f0324a27a
children
comparison
equal deleted inserted replaced
669:b1a3a056d7e6 670:52af7f62e731
53 53
54 public BundleGenerator(Internals hgRepo) { 54 public BundleGenerator(Internals hgRepo) {
55 repo = hgRepo; 55 repo = hgRepo;
56 } 56 }
57 57
58 /**
59 * @return never <code>null</code>. empty file if no changesets were written
60 */
58 public File create(List<Nodeid> changesets) throws HgIOException, IOException { 61 public File create(List<Nodeid> changesets) throws HgIOException, IOException {
59 final HgChangelog clog = repo.getRepo().getChangelog(); 62 final HgChangelog clog = repo.getRepo().getChangelog();
60 final HgManifest manifest = repo.getRepo().getManifest(); 63 final HgManifest manifest = repo.getRepo().getManifest();
61 IntVector clogRevsVector = new IntVector(changesets.size(), 0); 64 IntVector clogRevsVector = new IntVector(changesets.size(), 0);
62 for (Nodeid n : changesets) { 65 for (Nodeid n : changesets) {
83 } 86 }
84 }, clogRevs); 87 }, clogRevs);
85 manifestRevs.sort(true); 88 manifestRevs.sort(true);
86 // 89 //
87 final File bundleFile = File.createTempFile("hg4j-", ".bundle"); 90 final File bundleFile = File.createTempFile("hg4j-", ".bundle");
91 if (clogRevs.length == 0) {
92 // nothing to write
93 return bundleFile;
94 }
88 final FileOutputStream osBundle = new FileOutputStream(bundleFile); 95 final FileOutputStream osBundle = new FileOutputStream(bundleFile);
89 final OutputStreamSerializer outRaw = new OutputStreamSerializer(osBundle); 96 final OutputStreamSerializer outRaw = new OutputStreamSerializer(osBundle);
90 outRaw.write("HG10UN".getBytes(), 0, 6); 97 outRaw.write("HG10UN".getBytes(), 0, 6);
91 // 98 //
92 RevlogStream clogStream = repo.getImplAccess().getChangelogStream(); 99 RevlogStream clogStream = repo.getImplAccess().getChangelogStream();