[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tortoisesvn-dev
Subject:    Re: Log statistics chart fix for imported dumpfiles
From:       Stefan_Küng <tortoisesvn () gmail ! com>
Date:       2007-10-03 16:09:52
Message-ID: 4703BED0.6010401 () gmail ! com
[Download RAW message or body]

Andreas Nicolai wrote:
> This may take actually quite a bit more effort than I have time (at 
> least currently).
> 
> About the code change: I plan on just changing part of the code in 
> CStatGraphDlg::ShowCommitsByDate():
> 
> 1. find out the real last and first date:
> 
> So, replacing line:
>     CTime 
> lasttime((__time64_t)m_parDates->GetAt(m_parDates->GetCount()-1));
> with a min/max search for the date.
> 
> Now the way I see it from the code, the CDWordArray class used for 
> storing all the revision data is not STL compatible, so I cannot use any 
> algorithms. Does the framework used by TortoiseSVN include some 
> algorithms (i.e. for finding min/max values in the range) that work on 
> CDWordArray? Or do I really have to write a plain min/max search function?

You could replace the CDWordArray with an std::vector<DWORD> (or better 
yet, std::vector<__time64_t>).

> 2. next I need to define the granuarity of the chart - I would like to 
> add an option for the user to define weekly/monthly or yearly granularity.
> How would I do this best?

That would require some controls added to the dialog where the user can 
select the granularity. But do you really want that? The graph will look 
really ugly if too much is shown.

> 3. I would create a loop over all data points (like there is right now) 
> and create a map of a map:
> 
> std::map<int, std::map<stdstring, LONG> >
> 
> The key for the map indicates the time in the selected granularity, and 
> the value is a map of the commits that each author made at this time/in 
> this time interval.
> 
> In this loop I also create a set of authornames that have committed 
> something.

More complicated than I like things, but if you can make it work, go ahead!

> 4. Having created that map, I then loop over all author names in the set 
> and create a graphseries object
> 4.1 then I loop over all time points in the time point range determined 
> in (1) and add data series for the current author to the graphseries
> 
> Does this sound like a plan?
> In the current implementation, where does the threshold filter come in?

Just don't forget that there are repositories out there with > 50'000 
revisions and the stat dialog should not take minutes to show up.

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic