コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: SvnLogEventArgs.cs プロジェクト: mendix/LibSvnSharp
 internal SvnLogEventArgs(svn_log_entry_t entry, int mergeLevel, Uri logOrigin, AprPool pool)
     : base(entry, pool)
 {
     HasChildren          = entry.has_children;
     MergeLogNestingLevel = mergeLevel;
     LogOrigin            = logOrigin;
 }
コード例 #3
0
        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;
        }