[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Log caching: Crash in `Get merge logs' without access to the repository root

From: Ivan Zhakov <ivan_at_visualsvn.com>
Date: Mon, 14 Mar 2016 17:57:20 +0300

On 14 March 2016 at 13:33, Ivan Zhakov <ivan_at_visualsvn.com> wrote:
> On 11 March 2016 at 23:54, Stefan Küng <tortoisesvn_at_gmail.com> wrote:
>> On Fri, Mar 11, 2016 at 6:40 PM, Stefan Kueng <tortoisesvn_at_gmail.com> wrote:
>>
>>>
>>> Patch looks good!
>>> Please commit.
>>>
>>> But while I was going through the code and already made some similar
>>> changes as in your patch I got an idea:
>>>
>>> maybe we could remove the separate handling of logs with/without merge
>>> info completely and just use one code path for all situations?
>>>
>>> This would mean getting rid of the call to InternalLogWithMerge() and call
>>> InternalLog() instead. Then we could also remove the CMergeLogger() class.
>>>
>>> I'm doing some testing with that change (not finished yet) soon.
>>> But in the mean time: what do you think?
>>>
>>>
>>
>> Actually, there's more needed to make it work properly. Your patch fixes the
>> crash, that's good.
>> But if there are actually merged revisions shown/fetched, then the skip
>> range gets messed up.
> My bad, I missed that.
>
>> We have to 'ignore' all the merged revs that come in and not use them for
>> book keeping. We only have to update the cache and report those revisions
>> back to the caller, but *not* use them for e.g. updating the skip ranges.
>> If we do, then instead of one log call we get at least one more, maybe even
>> two.
>>
>> I have something working so far, but before I commit I'd like to do some
>> more testing.
>> I'll commit my change tomorrow if I don't find any other problems...
>>
> There are cases when that wouldn't work, since the merge-aware log is
> very different. For example 'svn log -g -c 27193
> https://svn.code.sf.net/p/tortoisesvn/code/branches/1.9.x' reports the
> following revisions:
> [[[
> r27193 | steveking | 2016-02-22 21:25:45
> ------------------------------------------------------------------------
> r27179 | ivan-z | 2016-02-22 13:09:20
> Merged via: r27193
> ------------------------------------------------------------------------
> r27177 | ivan-z | 2016-02-19 18:30:56
> Merged via: r27193
> ------------------------------------------------------------------------
> r27176 | ivan-z | 2016-02-19 18:28:26
> Merged via: r27193
> ------------------------------------------------------------------------
> r27175 | ivan-z | 2016-02-19 18:27:41
> Merged via: r27193
> ------------------------------------------------------------------------
> r27169 | steveking | 2016-02-10 22:22:11
> Merged via: r27193
> ------------------------------------------------------------------------
> r27168 | steveking | 2016-02-10 22:20:50
> Merged via: r27193
> ------------------------------------------------------------------------
> r27167 | steveking | 2016-02-08 23:27:58
> Merged via: r27193
> ]]]
>
> But log caching doesn't have information about merges and would report
> just r27193 if it's cached. To reproduce with TortoiseSVN trunk_at_27240:
> 1. Enable Log Caching
> 2. Start TortoiseSVN log for
> https://svn.code.sf.net/p/tortoisesvn/code/branches/1.9.x:
> TortoiseProc.exe /command:log
> /path:https://svn.code.sf.net/p/tortoisesvn/code/branches/1.9.x
> /startrev:27193 /endrev:27193
> 3. Click "Include merged revisions"
> Merged revisions will not be displayed, while they should. They may
> appear after pressing F5, but they will not be reported as merged.
>
> I think the best solution would be just to skip log caching completely
> for merge-aware logs. I'm going to prepare patch for this.
>
Here is the patch. Changes from trunk:
- Do not populate skip ranges from merge-aware log results.
- Request all range for merge-aware logs. Merge-aware log cannot be
requested by sub-ranges due to non-linear nature of merge-aware logs.

-- 
Ivan Zhakov
------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=3165849
To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].

Received on 2016-03-14 17:25:22 CET

This is an archived mail posted to the TortoiseSVN Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.