예제 #1
0
        private void MoveUpdatedIndexToFinalLocation(bool shouldSignIndex)
        {
            if (shouldSignIndex)
            {
                using (ITracer activity = this.tracer.StartActivity("SignIndex", EventLevel.Informational, Keywords.Telemetry, metadata: null))
                {
                    using (FileStream fs = File.Open(this.updatedIndexPath, FileMode.Open, FileAccess.ReadWrite))
                    {
                        // Truncate the old hash off. The Index class is expected to preserve any existing hash.
                        fs.SetLength(fs.Length - 20);
                        using (HashingStream hashStream = new HashingStream(fs))
                        {
                            fs.Position = 0;
                            hashStream.CopyTo(Stream.Null);
                            byte[] hash = hashStream.Hash;

                            // The fs pointer is now where the old hash used to be. Perfect. :)
                            fs.Write(hash, 0, hash.Length);
                        }
                    }
                }
            }

            this.tracer.RelatedEvent(EventLevel.Informational, "MoveUpdatedIndexToFinalLocation", new EventMetadata() { { "UpdatedIndex", this.updatedIndexPath }, { "Index", this.indexPath } });
            File.Delete(this.indexPath);
            File.Move(this.updatedIndexPath, this.indexPath);

            this.WriteFastFetchIndexVersionMarker();
        }
예제 #2
0
파일: Index.cs 프로젝트: cgallred/VFSForGit
        private void SignIndex()
        {
            using (ITracer activity = this.tracer.StartActivity("SignIndex", EventLevel.Informational, Keywords.Telemetry, metadata: null))
            {
                using (FileStream fs = File.Open(this.indexPath, FileMode.Open, FileAccess.ReadWrite))
                {
                    // Truncate the old hash off. The Index class is expected to preserve any existing hash.
                    fs.SetLength(fs.Length - 20);
                    using (HashingStream hashStream = new HashingStream(fs))
                    {
                        fs.Position = 0;
                        hashStream.CopyTo(Stream.Null);
                        byte[] hash = hashStream.Hash;

                        // The fs pointer is now where the old hash used to be. Perfect. :)
                        fs.Write(hash, 0, hash.Length);
                    }
                }
            }
        }