Example #1
0
        internal void NotifyRecordAdded()
        {
            var data = Repository.Accessor.QueryReflog.Invoke(
                new QueryReflogParameters(Reference.FullName)
            {
                MaxCount = 1,
            });

            if (data.Count != 1)
            {
                return;
            }
            var record = data[0];

            lock (SyncRoot)
            {
                if (_reflog.Count != 0)
                {
                    if (record.Revision.SHA1 == _reflog[0].Revision.Hash)
                    {
                        return;
                    }
                }
                var item = ObjectFactories.CreateReflogRecord(this, record);
                _reflog.Insert(0, item);
                for (int i = 1; i < _reflog.Count; ++i)
                {
                    _reflog[i].Index = i;
                }
                InvokeRecordAdded(item);
            }
        }
Example #2
0
        public void Refresh()
        {
            var reflog = Repository.Accessor.QueryReflog.Invoke(
                new QueryReflogParameters(Reference.FullName));

            lock (SyncRoot)
            {
                if (reflog.Count < _reflog.Count)
                {
                    for (int i = _reflog.Count - 1; i >= reflog.Count; --i)
                    {
                        _reflog[i].MarkAsDeleted();
                        _reflog.RemoveAt(i);
                    }
                }
                for (int i = 0; i < _reflog.Count; ++i)
                {
                    ObjectFactories.UpdateReflogRecord(_reflog[i], reflog[i]);
                }
                for (int i = _reflog.Count; i < reflog.Count; ++i)
                {
                    var reflogRecord = ObjectFactories.CreateReflogRecord(this, reflog[i]);
                    _reflog.Add(reflogRecord);
                    InvokeRecordAdded(reflogRecord);
                }
            }
        }