Hi Aaron,

This looks great! I will look at it in details over the next few days.


For Gerrit, the idea is to push to a special "refs/for/*" branch. The
Gerrit daemon on the server listens for anything pushed to these
branches, and will create a corresponding review on the website. For
example, pushing to "refs/heads/master" would push directly to the
master branch (but you probably don't have permission to do this ;) ),
but "refs/for/master" will simply create a review entry, targeted for
the master branch.

My .git/config entry looks like this:

[remote "eclipse-review"]
    url =
ssh://<user>@git.eclipse.org:29418/linuxtools/org.eclipse.linuxtools.git
    push = HEAD:refs/for/master

(just replace <user> with the username of you Eclipse account)
Then I can just do "git push eclipse-review", to push the current branch
to Gerrit, which will create one review entry per commit in the branch.
Also make sure you have the commit hook to add Change-Id lines to the
commit messages. Gerrit uses these to recognize different versions of
the same patch.


Cheers,
Alexandre


On 13-04-11 06:07 PM, Aaron Spear wrote:
> Hi Alexandre (and others), 
>
> I am picking up a discussion we were having a month ago or so about 
> contributing the data driven state provider stuff that I have been working 
> on. Even based on changes that I just saw in master (the "partial history" 
> support), it seems clear that there is some synchronization in plans and 
> vision that needs to happen, so I am hoping that you could kindly review what 
> I have done and offer any comments on architecture changes you would like to 
> see, or things you don't like or whatever, so that I can get the ball 
> rolling. 
>
> GETTING STARTED: 
> I spent some time cleaning up the code a bit and then created a fork of 
> linuxtools on github, and then merged my changes in to a 
> "state-system-extensions" branch there. I am quite sure that I am going to 
> have to retool the branch to split changes into chunks that can be 
> contributed incrementally. https://github.com/aspear/linuxtools
>
> There are full instructions on how to get started and reproduce the views 
> that I previously sent screenshots of here: 
> https://github.com/aspear/linuxtools/blob/state-system-extensions/lttng/org.eclipse.linuxtools.tmf.stateflow.ui.tests/README.txt
>  
>
> (Note that this "test" plugin really doesn't have any tests in it yet, I just 
> wanted to have a container to dump in my example traces and screenshots and 
> such.)
>
> HIGH LEVEL OVERVIEW OF WHAT I DID: 
>
> STATE SYSTEM "PRESENTATION INFO":
> 1) I added a new method to ITmfStateSystem, IStateSystemPresentationInfo  
> ITmfStateSystem.getStatePresentationInfo();  The idea here is that optionally 
> a state system can provide some metadata that can help a trace agnostic 
> viewer to parse the data.  ITmfStateSystemBuilder adds a setter for this 
> IStateSystemPresentationInfo info.  My thought was that the derived 
> IStateChangeInput, which knows about the state system and the state schema, 
> could call the setter to set the presentation info in the state system.
>
> 2) I added an entire GUI view that I cloned from ControlFlowView that knows 
> how to use this presentation info.  More on that later.
>
> STATE SYSTEM FACTORY: 
> 3) I added a new "org.eclipse.linuxtools.tmf.ui.statesystemfactory" extension 
> point to the org.eclipse.linuxtools.tmf.ui plugin. In reality extensions that 
> implement this are headless and simply providing the implementation of a new 
> IStateSystemFactory interface. I added it to this plugin because it seemed to 
> be the only one that was providing extension points right now?  It belongs in 
> org.eclipse.linuxtools.tmf.core, should I add it to that? (seems like the 
> trace extension belongs there too right?) 
>
> 4) In the org.eclipse.linuxtools.tmf.core plugin I added 
> org.eclipse.linuxtools.tmf.core.statesystem.StateSystemFactoryManager, which 
> catalogs and caches the implementations of this factory.  I would think this 
> class could be merged into StateSystemManager if you find the approach OK.   
> StateSystemFactoryManager is a singleton that can be used to get the factory 
> and then create a ITmfStateSystem instance for a given trace.  Note that I 
> did this, as opposed to creating a IStateChangeInput from the factory, 
> because there were flows through the current code, in the case that the state 
> database file already exists where there is no IStateChangeInput created at 
> all, and that screwed me over since I then had no way to get the 
> presentation.  I am sure there is a more simple and graceful way to do this 
> initialization... 
>
> 5) TmfTrace.buildStateSystem is extended so that it attempts to use the 
> factory to create a state system for an arbitrary trace.  There are ways to 
> say which factory you want it to use (this info is cached) but if this 
> doesn't exist, then all factories are iterated and the first one that works 
> is used.  Of course a derived trace can still do whatever it wants, so no 
> existing functionality is changed.
>
> XML DATA DRIVEN STATE:
> 6) My stateflow.ui plugin provides the implementation of the state factory 
> extension point so that it looks for an XML file with the same name as the 
> trace but with ".state-schema.xml" appended to the end of it.  This is, of 
> course, a pretty sucky work flow because it means you have to copy these XML 
> files all over the place.  I would note that this is only one way to do it.  
> The factories can be much smarter if they wish. In fact in the case of my 
> Java function call tracer, the derived trace actually reads the XML from a 
> file that lives in the plugin, which is seamless.  There can be other ways to 
> specify mappings between file patterns and schema files to use and such as 
> well.
>
> STATE FLOW VIEW:
> 7) I cloned ControlFlowView and rewrote it a bit to understand this schema.  
> I am still not entirely pleased with the way that it is setup today.  I will 
> likely remove all of the columns on the table except for the name, and then 
> put the trace in as the top level context node in the tree.   From there, the 
> nodes in the context are specific to the trace.  Note that I am also going to 
> extend this view so that it supports multiple traces at the same time (very 
> important) so that you can correlate state changes from multiple contexts.  
> Of course there is a lot to think about here.  Really all of the these 
> viewers should be refactored so that any trace can provide a state flow that 
> can then be correlated (e.g. UST + LTTng kernel + my state flow).
>
> -------------------  
> There is a lot to say and a lot that I have planned to build, but this is a 
> good start, so I will eagerly await any feedback.  
>
> Note that I am especially pleased that Florian Wininger, a grad student 
> studying under Michel Dagenais, is willing to jump into this same data driven 
> trace state work as well.  He already has my prototype working and was going 
> to contrast what I have done with his own requirements, so I think there will 
> be good things coming.
>
> BTW, I looked through the content at http://wiki.eclipse.org/Gerrit, and it 
> is not entirely clear to me how exactly I can contribute my code for review 
> with Gerrit.  Must any changes contributed there be to the master branch?  Or 
> can I push another branch for review?  Any tips to docs or examples 
> gratefully accepted.
>
> best regards,
> Aaron Spear

_______________________________________________
linuxtools-dev mailing list
linuxtools-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/linuxtools-dev

Reply via email to