private IDictionary<HgNodeID, uint> CommitChangelog(HgChangeset tip, IEnumerable<HgChunk> chunks, HgRevlog hgRevlog, out int changesets) { var revisions = new Dictionary<HgNodeID, uint>(); var revision = tip == null ? 0 : tip.Metadata.Revision + 1; changesets = 0; var hgRevlogWriter = new HgRevlogWriter(hgRevlog, atomicFileSystem); changesets = hgRevlogWriter.WriteRevlogEntries(chunks, n => { var linkRevision = revision++; revisions[n] = linkRevision; return linkRevision; }, e => { revisions[e.NodeID] = e.Revision; }); return revisions; }
private void Commit(IDictionary<HgNodeID, uint> revisions, IEnumerable<HgChunk> chunks, HgRevlog hgRevlog, ref int changes) { var hgRevlogWriter = new HgRevlogWriter(hgRevlog, fileSystem); changes += hgRevlogWriter.WriteRevlogEntries(chunks, n => { var linkRevision = revisions.ContainsKey(n) ? revisions[n] : (uint?)null; if(!linkRevision.HasValue) throw new Exception("missing changeset in bundle"); return linkRevision.Value; }); }