public HgCommit(HgNodeID firstParentNodeID, HgNodeID secondParentNodeID, HgAuthor committedBy, DateTimeOffset committedAt, HgBranch branch, string comment, params HgCommitFileEntry[] files) : base(firstParentNodeID, secondParentNodeID) { CommittedBy = committedBy; CommittedAt = committedAt; Branch = branch; Comment = comment; Files = new ReadOnlyCollection<HgCommitFileEntry>(new List<HgCommitFileEntry>(files)); }
public HgChangeset(HgRevlogEntryMetadata metadata, HgNodeID manifestNodeID, HgAuthor committedBy, DateTimeOffset committedAt, HgBranch branch, HgNodeID sourceNodeID, IEnumerable<string> files, string comment) { Metadata = metadata; ManifestNodeID = manifestNodeID; CommittedBy = committedBy; CommittedAt = committedAt; Branch = branch; SourceNodeID = sourceNodeID; Files = new ReadOnlyCollection<string>(new List<string>(files)); Comment = comment; }
private HgChangeset ReadChangesetInternal(HgRevlogEntryData revlogEntryData) { var filesStart = revlogEntryData.Data.IndexOfNth((byte)'\n', 3); var filesEnd = revlogEntryData.Data.IndexOf((byte)'\n', (byte)'\n'); var headerString = hgEncoder.DecodeAsUtf8(revlogEntryData.Data, 0, filesStart); var filesString = filesStart == filesEnd ? "" : hgEncoder.DecodeAsLocal( revlogEntryData.Data, filesStart + 1, // The \n filesEnd - filesStart - 1); var commentString = hgEncoder.DecodeAsUtf8( revlogEntryData.Data, filesEnd + 2, // These \n\n bytes revlogEntryData.Data.Length - filesEnd - 2); var header = headerString.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); var manifestNodeID = new HgNodeID(header[0]); var committedBy = HgAuthor.Parse(header[1]); var timeParts = header[2].Split(' '); var time = int.Parse(timeParts[0]); var timeZone = int.Parse(timeParts[1]); var branchData = header[2].SubstringAfterNth(" ", 1).Or("branch:default"); var b = branchData.Split('\0').Select(s => new { key = s.Split(':')[0], value = s.Split(':')[1] }).ToDictionary(s => s.key, s => s.value).DefaultableWith(v => ""); var branchName = new HgBranch(b["branch"].Or("default"), b["close"] == "1"); var sourceNodeID = new HgNodeID(b["source"].Or(HgNodeID.Null.Long)); var dateTime = DateTime.SpecifyKind(new DateTime(1970, 1, 1).AddSeconds(time).AddSeconds(-1 * timeZone), DateTimeKind.Local); var committedAt = new DateTimeOffset(dateTime); var files = filesString.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); var metadata = GetRevlogEntryMetadata(revlogEntryData.Entry); return new HgChangeset(metadata, manifestNodeID, committedBy, committedAt, branchName, sourceNodeID, files, commentString); }
public HgBranchmap(HgBranch branch, IEnumerable<HgNodeID> nodeIDs) { Branch = branch; NodeIDs = new ReadOnlyCollection<HgNodeID>(new List<HgNodeID>(nodeIDs)); }