internal virtual void Enlist(HgFilelog hgFilelog, HgTransaction hgTransaction)
        {
            log.Debug("enlisting filelog '{0}'", hgFilelog.Path.FullPath);

            hgTransaction.AddJournalEntry("data/" + hgFilelog.Path.FullPath.TrimStart('/') + ".i", hgFilelog.Revlog.IndexPath);

            if(!hgFilelog.Revlog.InlineData)
                hgTransaction.AddJournalEntry("data/" + hgFilelog.Path.FullPath.TrimStart('/') + ".d", hgFilelog.Revlog.DataPath);
        }
 internal override void Enlist(HgFilelog hgFilelog, HgTransaction hgTransaction)
 {
     underlyingStore.Enlist(hgFilelog, hgTransaction);
 }
        private IEnumerable<uint> GetFileHistory(HgFilelog filelog, HgNodeID startNodeID)
        {
            var entries = 
                filelog.Revlog.Entries.
                    OrderByDescending(e => e.Revision).
                    SkipWhile(e => e.NodeID != startNodeID).
                    ToList();

            foreach(var entry in entries)
            {
                
                yield return entry.LinkRevision;

                var file = GetFile(new HgManifestFileEntry(filelog.Path, entry.NodeID));
                if(file.CopyInfo != null)
                {
                    var sourceFilelog = GetFilelog(file.CopyInfo.Path);
                    if(sourceFilelog == null) yield break;

                    foreach(var changeset in GetFileHistory(sourceFilelog, file.CopyInfo.NodeID))
                        yield return changeset;

                    yield break;
                }   
            
                if(entry.FirstParentRevisionNodeID == HgNodeID.Null)
                    yield break;

            } // foreach
        }
 public void Enlist(HgFilelog hgFilelog)
 {
     hgStore.Enlist(hgFilelog, this);
 }