SVN Time-Lapse View
The skinny: There's now a Time-Lapse View for Subversion.
One of the things I missed from Perforce was its excellent "Time-Lapse View". It's basically a window with a slider that you could drag to view all revisions of a file. Kind of like Subversion's blame command, but applied to whatever revision you scrolled to. Differences between revisions are highlighted.
Well now we have a Time-Lapse View for the Subversion world, as you can see from the screenshot above. First, select your file then press Load. The last 100 revisions will be downloaded (you can stop it early if it is taking too long). Then you can drag the slider to find out exactly when that line was added, or who deleted your cool function, or why that code was changed.
One of the things I missed from Perforce was its excellent "Time-Lapse View". It's basically a window with a slider that you could drag to view all revisions of a file. Kind of like Subversion's blame command, but applied to whatever revision you scrolled to. Differences between revisions are highlighted.
Well now we have a Time-Lapse View for the Subversion world, as you can see from the screenshot above. First, select your file then press Load. The last 100 revisions will be downloaded (you can stop it early if it is taking too long). Then you can drag the slider to find out exactly when that line was added, or who deleted your cool function, or why that code was changed.
20 Comments:
Very cool Jon. Thanks for contributing this!
By Anonymous, at 10/16/2007 6:43 a.m.
What libraries do I need installed to use this? When I try to load a file from SVN, I get this:
ava.lang.NoClassDefFoundError: ch/ethz/ssh2/InteractiveCallback
at org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:66)
at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:60)
at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:970)
at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:140)
at com.jonathanaquino.svntimelapseview.SvnLoader.loadRevisionsProper(SvnLoader.java:87)
at com.jonathanaquino.svntimelapseview.SvnLoader.access$0(SvnLoader.java:80)
at com.jonathanaquino.svntimelapseview.SvnLoader$2.execute(SvnLoader.java:63)
at com.jonathanaquino.svntimelapseview.helpers.MiscHelper.handleExceptions(MiscHelper.java:23)
at com.jonathanaquino.svntimelapseview.SvnLoader$1.run(SvnLoader.java:61)
at java.lang.Thread.run(Thread.java:619)
By Alex, at 10/16/2007 9:28 a.m.
Todd - You're most welcome!
Alex - Sorry about that - I've added some missing svnkit jars in Version 1.1.
By Jonathan, at 10/16/2007 12:44 p.m.
Jon, this is amazing - how long did it take for you to do this?
I speak for all the mac users in the office by asking that is this built in Java, and thus available to mac users too?
By Anonymous, at 10/16/2007 6:42 p.m.
Hi Paul - It's been percolating in my mind for some weeks now, but on the weekend I just decided to sit down and do it.
Yup, it works on any Mac with Java installed - just double-click the .jar file.
By Jonathan, at 10/16/2007 10:35 p.m.
Have you ever tried it with svn+ssh:// URLs? I have a couple of svn repos behind svn and I can't access them via this or other svnkit-based java apps such as jedit's svn plugin.
By Unknown, at 10/18/2007 10:25 a.m.
Very cool! I'll definitely check that out.
By the way, the links (on the code.google site) to the screen shots require you to be logged in to Flickr to see them. That may not have been intentional.
By David Glasser, at 10/18/2007 4:36 p.m.
Alan - Alas, I haven't. Have you tried opening a local workspace file? Maybe it will work that way.
David - Thanks for pointing that out - fixed!
By Jonathan, at 10/18/2007 9:18 p.m.
Very nice. Thanks a lot.
I am spreading the word.
Cheers
By Unknown, at 10/19/2007 9:10 a.m.
This is a really nice tool, but it would really benefit from some additional UI elements.
- A file list tree pane would be ideal
- Not having to press enter inside one of the fields to make the load happen (this should be active from the pane
- Local project lists, or repository browsing
- Being able to lock one of the frames to a specific version for direct comparison
Great job otherwise - thanks for the app :)
By Anonymous, at 10/19/2007 3:26 p.m.
Nuin - Thanks a bunch.
Anon - Great suggestions!
By Jonathan, at 10/19/2007 7:40 p.m.
This is fantastic! Thanks for making a great tool.
By Anonymous, at 10/20/2007 4:19 p.m.
My pleasure!
By Jonathan, at 10/20/2007 5:37 p.m.
If the value of the "Limit" field is greater than the number of revisions of the file, I get an exception:
java.lang.IndexOutOfBoundsException: toIndex = 100
at java.util.SubList.<init>(Unknown Source)
at java.util.RandomAccessSubList.<init>(Unknown Source)
at java.util.AbstractList.subList(Unknown Source)
at com.jonathanaquino.svntimelapseview.SvnLoader.loadRevisionsProper(SvnLoader.java:89)
at com.jonathanaquino.svntimelapseview.SvnLoader.access$0(SvnLoader.java:80)
at com.jonathanaquino.svntimelapseview.SvnLoader$2.execute(SvnLoader.java:63)
at com.jonathanaquino.svntimelapseview.helpers.MiscHelper.handleExceptions(MiscHelper.java:24)
at com.jonathanaquino.svntimelapseview.SvnLoader$1.run(SvnLoader.java:61)
at java.lang.Thread.run(Unknown Source)
Otherwise it works fine -- a very useful tool!
By Emphyrio, at 10/23/2007 6:31 a.m.
John - sorry about that - fixed in Version 1.5.
By Jonathan, at 10/23/2007 6:58 p.m.
Java newbie here. Whenever I do a
C:\Documents and Settings\cherian\Desktop\svn-time-lapse-view-1.3\svn-time-lapse
-view>java -jar SvnTimeLapseView.jar
I get
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.simontuffs.onejar.Boot.run(Boot.java:243)
at com.simontuffs.onejar.Boot.main(Boot.java:89)
Caused by: java.lang.NoSuchMethodError: java.lang.Boolean.parseBoolean(Ljava/lan
g/String;)Z
at com.jonathanaquino.svntimelapseview.Configuration.getBoolean(Configur
ation.java:123)
at com.jonathanaquino.svntimelapseview.ApplicationWindow.initializeWindo
wPosition(ApplicationWindow.java:236)
at com.jonathanaquino.svntimelapseview.ApplicationWindow.initialize(Appl
icationWindow.java:113)
at com.jonathanaquino.svntimelapseview.ApplicationWindow.snipped init tag (Applicat
ionWindow.java:96)
at com.jonathanaquino.svntimelapseview.Application.main(Application.java
:41)
... 6 more
Am I missing libraries??....
By Unknown, at 10/24/2007 9:23 p.m.
Hi Cherian. You need to be running at least Java 1.5 for SVN Time-Lapse View to work.
(Boolean.parseBoolean is in Java 1.5).
By Jonathan, at 3/18/2009 7:43 p.m.
Do you plan on doing sth similar for Git?
By GitNoob, at 6/09/2009 9:36 a.m.
One day, perhaps. Or why don’t you try your hand at it? Hopefully git has a Java interface.
By Jonathan, at 6/09/2009 6:28 p.m.
Ok, git time lapse view is here:
https://github.com/JonathanAquino/git-time-lapse-view
By Jonathan, at 5/25/2015 8:47 a.m.
Post a Comment
<< Home