protected internal override unsafe void Detach(bool keepProperties) { try { if (keepProperties) { // Use all properties to get them cached in .Net memory GC.KeepAlive(ChangedPaths); GC.KeepAlive(Author); GC.KeepAlive(LogMessage); GC.KeepAlive(RevisionProperties); } if (_changeItemsToDetach != null) { foreach (SvnChangeItem i in _changeItemsToDetach) { i.Detach(keepProperties); } } } finally { _entry = null; _pool = null; _pcMessage = null; _pcAuthor = null; _changeItemsToDetach = null; base.Detach(keepProperties); } }
internal SvnLogEventArgs(svn_log_entry_t entry, int mergeLevel, Uri logOrigin, AprPool pool) : base(entry, pool) { HasChildren = entry.has_children; MergeLogNestingLevel = mergeLevel; LogOrigin = logOrigin; }
internal unsafe SvnLoggingEventArgs(svn_log_entry_t entry, AprPool pool) { if (entry == null) { throw new ArgumentNullException(nameof(entry)); } if (pool == null) { throw new ArgumentNullException(nameof(pool)); } _entry = entry; _pool = pool; sbyte *pcAuthor = null; sbyte *pcDate = null; sbyte *pcMessage = null; if (entry.revprops != null) { svn_compat.svn_compat_log_revprops_out(&pcAuthor, &pcDate, &pcMessage, entry.revprops); } if (pcDate != null) { long when = 0; // Documentation: date must be parsable by svn_time_from_cstring() svn_error_t err = pcDate != null?svn_time.svn_time_from_cstring(ref when, pcDate, pool.Handle) : null; if (err == null) { Time = SvnBase.DateTimeFromAprTime(when); } else { svn_error.svn_error_clear(err); } } else { Time = DateTime.MinValue; } Revision = entry.revision; _pcAuthor = pcAuthor; _pcMessage = pcMessage; NotInheritable = entry.non_inheritable; SubtractiveMerge = entry.subtractive_merge; }