Hi Peter,
Thanks for your quick answer. I was pretty curious about trying to implement some of this ideas, but only until today I had the proper time to do it. I ran your code and now I'm trying to translate the ideas on it to my problem: Drawing a tree for the story of a fossil repository.
First, using the procedure at [1] I was able to export a fossil commit repo history as Json and by running the script at [2] I was able to get a small set of dots, which represent dictionaries with all commit data, including ancestors for each node, like the attached screenshot shows. In the video at [3] at 1:06 min, seems that lays the key for my visualization, but for that I need to create a fossil commit object that can understand the #ancestor message. Because I already have them as dictionaries thanks to NeoJson, seems that I'm really close to get the visualization I'm looking for. I hope to work on it this morning and return to the list with data visualizations or more questions.
[1]
http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeline-to-another-format/30584926#30584926
[2]
http://ws.stfx.eu/A5C8JJMA2HUK
[3]
https://vimeo.com/116886609
Cheers,
Offray
On 02/06/15 05:09, Peter Uhn��k wrote:
HI Offray,
I gave it a quick bash and come up with the following code. It's just a prototype and could be greatly simplified.
- MCVersionInfo ancestors for whatever reason returned empty array down the line (so its cut off at the end), but I didn't investigate the problem
- edge building and possibly ancestor retrieval could be simplified with builders; I think RTMondrian has methods for it but can't remember exactly (agilevisualization mentioned RTGraphBuilder but that has been removed to my knowledge)
~~~~~~~~~~~~~~~
mc := MCSmalltalkhubRepository allInstances detect: [ :m | m project = 'Roassal2' ].
root := mc versionInfoFromFileNamed: mc readableFileNames first.
family := Set new.
retriever := nil.
retriever := [ :child |
family add: child.
child ancestors do: [ :a | retriever value: a ]
].
retriever value: root.
obs := family asGroup.
v := RTView new.
es := RTEllipse new size: 15; color: Color blue; elementsOn: obs.
v addAll: es.
edges := RTEdge
buildEdgesFromObjects: obs
from: #yourself
toAll: #ancestors
using: (RTArrowedLine new withShorterDistanceAttachPoint; color: Color red)
scope: es.
v addAll: edges.
es @ RTDraggable.
es @ (RTLabelled new text: [ :m | m nameWithout: 'Roassal2' ]).
v @ RTDraggableView.
v @ RTZoomableView.
RTDominanceTreeLayout new
verticalGap: 30;
horizontalGap: 15;
on: es.
v open
~~~~~~~~~~~~~~~~
<Mail Attachment.png>
Cheers,
Peter
���
On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna C��rdenas
<offray@riseup.net>
wrote:
Hi,
On a closer detail, seems that [1] contains the starting point I'm looking for. I'll keep you posted and of course any other approach will be listened.
[1]
https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/0104-Roassal.html
Cheers,
Offray
On 01/06/15 22:04, Offray Vladimir Luna C��rdenas wrote:
Hi all,
I had asked a similar question before with no much advances, but today I made a discovery that can improve the things a lot: how to export timeline data as structured JSON [1] (and of course this open the possibility to work with it on Pharo). Now I would like to graph the data as a tree with forks, merges and dates and authors of commits. I have seen chronia, but seems overkill for this feature (and is integrated with CVS only).
[1]
http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeline-to-another-format/30580043#30580043
As usual, any pointer on how to get this going will be greatly appreciated and I will give feedback to the community on how to do it.
Cheers,
Offray