Open Bug 1200362 Opened 9 years ago Updated 7 years ago

Stand up a ViewVC server to replace Bonsai

Categories

(Developer Services :: General, task)

task
Not set
normal

Tracking

(Not tracked)

People

(Reporter: gps, Unassigned)

References

Details

Bonsai was turned off. Various people want a web view of CVS history. ViewVC is a newer, less insecure version of Bonsai. Let's stand up a ViewVC instance somewhere on the Internet that serves up old CVS repositories.

We'll also want to install HTTP 301 redirects from old Bonsai URLs to ViewVC so URLs in e.g. Bugzilla comments continue to work.
I quickly provisioned an EC2 instance and installed ViewVC on it: http://52.25.115.98/viewvc/main/

It is still performing the repository->MySQL indexing, so the query feature may not be fully available. I also haven't fully gone through the ViewVC config file to tweak various options.

bz: Please let me know if this satisfies your requirements for a web-based CVS viewer. If so, I'll spend the additional work to "productionize" it.
Flags: needinfo?(bzbarsky)
Ccing Olli too, since he's also a Bonsai user.

ViewVC looks like it'll be good enough for what I typically want.  Looks like it does show deleted files (though not sure what it does when a file is deleted and then a new one created in its place with the same name, which I think we did in some places in layout), and lets me link to a particular blame line.  Not sure whether it does line range highlighting, but lack of that is not a showstopper for me.
Flags: needinfo?(bzbarsky)
And also, thank you for doing this!  I really appreciate it.
Rather cluttered UI, unfortunately. Like showing all those CVS tags. But that is something one can live with.
But, doesn't have the super handy hover-over-line-to-show-commit-message-and-possible-link-to-the-relevant-bug - that is close to a show-stopper (unlike range highlighting which just happens to be very useful). Perhaps I just don't know yet how to use ViewVC efficiently.
Ok, figured out how to get from a line to the relevant bug.
bonsai requires one click (1)

ViewVC needs: click the relevant line's revision (1),
in the diff view click the same revision on top right (2),
and then you see the relevant commit message from which the bug number can be copied (3),
and then you load a bugzilla page or put some bugzilla url to the location bar and remove its bug#(4)
paste the bug number (5)
press enter (6)

Far from the usefulness of bonsai, but not that much worse comparing to hg or git annotate.
I can live with this.


Thanks for helping us ancient code archaeologists, gps!
:gps thanks!
This came up again today, when someone was trying to look up blame via mxr/dxr code searches...
Continue pointing people at the URL in comment #1 until I have time to deal with this. A single ping every ~3 weeks is not sufficient to make this a priority for me.
OK, I'll ping whenever this comes up as an issue for me personally.  ;)
This is an issue for me, since given that looking at the cvs era blame is harder than it should be, I don't look at it so likely, which possibly reduces the quality of reviews and such.
(but good that at least http://52.25.115.98/viewvc/main/ is running)
Came up again today when trying to look up blame in nsExpatDriver; https://github.com/mozilla/gecko-dev/commit/d5c2b484c4239d8d28e2ea3aaba8d4780f9d90b6?diff=split helpfully says "434 additions, 415 deletions not shown" for the nsExpatDriver.cpp bits I cared about.
Oh, but the viewvc instance did get me the info I wanted.  Lots more clicking than Bonsai, but I got there eventually.  So thank you for that!
It really would be nice to have mxr (http://mxr.mozilla.org/seamonkey) to link to some instance of
ViewVC (or some other tool showing the blame)
Since pings seem to be desired here I'll mention that today the link in comment 1 was able to provide me the info I needed that github gecko-dev web interface was unable to provide me.
Ended up using the viewvc instance again today to look up when nsCycleCollector.h was initially checked into the tree.  The fact that the "CVS log" link from MXR didn't point to anything useful was a pain.  :(
(In reply to Boris Zbarsky [:bz] from comment #16)
> The fact that the
> "CVS log" link from MXR didn't point to anything useful was a pain.  :(

Worse than that, it points to a site which makes you think if you wait an hour the site will come back. I was fooled by the page.
Recently I've needed cvs era blame at least for xul fastload/cache, docshell, dom events and uriload/* stuff.

I mentioned this in http://bit.ly/1iQJVK0 (I think that is Moco internal, sorry. Don't know why.)
Random question: is the Git repo's converted-from-CVS history "good enough?" I know the CVS history is a mess and oddities are multiplied when converted to Git/Mercurial. But I'm not sure I've ever heard anyone quantify how often they absolutely need access to the CVS history when the Git conversion fails them. Inquiring minds want to know.
Which git repo. Looks like github gives "This blame took too long to generate." errors quite easily.
And I couldn't find annotation/blame easily from git.mozilla.org, but I'm probably looking at wrong place.
We have blame disabled on git.mozilla.org for performance reasons.

In theory you could run `git blame` or a Git HTTP server locally. But if nobody has done that, then I guess we don't know how good the Git history is for CVS forensics.
(In reply to Gregory Szorc [:gps] from comment #21)
> In theory you could run `git blame` or a Git HTTP server locally. But if
> nobody has done that, then I guess we don't know how good the Git history is
> for CVS forensics.

I've used it plenty of times, via github, and it seems to produce good results. The only problem I've had is that it times out for large files like nsGlobalWindow.cpp.
(In reply to Andrew McCreight [:mccr8] from comment #22)
> (In reply to Gregory Szorc [:gps] from comment #21)
> > In theory you could run `git blame` or a Git HTTP server locally. But if
> > nobody has done that, then I guess we don't know how good the Git history is
> > for CVS forensics.
> 
> I've used it plenty of times, via github, and it seems to produce good
> results. The only problem I've had is that it times out for large files like
> nsGlobalWindow.cpp.

I've wanted to look at a large diff, only to have github truncate it the bits that I'm interested in. Not sure if I'm too dumb to figure out how to get around that, or it's not possible.
Used this again today to look up nsGlobalWindow blame.
Used this again to look up blame for html.css.
was looking at nsILayoutHistoryState.h today
Used this today for MIMEHeaderParam.
Tried to use this today for looking at the history of nsConsoleService.  Stymied by CVS's non-atomic commits; when I attempted to query the revision history for a file named nsConsoleService.cpp, I got:


An Exception Has Occurred
Python Traceback

Traceback (most recent call last):
  File "/mnt/data/viewvc/lib/viewvc.py", line 4848, in main
    request.run_viewvc()
  File "/mnt/data/viewvc/lib/viewvc.py", line 402, in run_viewvc
    self.view_func(self)
  File "/mnt/data/viewvc/lib/viewvc.py", line 4475, in view_query
    import cvsdb
  File "/mnt/data/viewvc/lib/cvsdb.py", line 21, in <module>
    import dbi
  File "/mnt/data/viewvc/lib/dbi.py", line 18, in <module>
    import MySQLdb
ImportError: No module named MySQLdb
I've needed cvs blame again couple of times this week.
Used this for xpcwrappednative.cpp.
Thanks again for running this!
Used this today for HTMLInputElement.
Have spent now an hour or two trying to find some old code using hints in seamonkey mxr and viewvc. Bonsai would have probably cut the time to 1/4.
Used this for nsDocShell today.
https://hg.mozilla.org/experimental/gecko-dev/ exists now. It is a straight conversion of the gecko-dev Git repo to Mercurial. Please leave feedback in bug 1265493, not here.
(In reply to Gregory Szorc [:gps] from comment #1)
> I quickly provisioned an EC2 instance and installed ViewVC on it:
> http://52.25.115.98/viewvc/main/

:gps, could you add the l10n and www repos (from http://archive.mozilla.org/pub/vcs-archive/) to this? I need to try and get them into DXR and can't use the copies on MXR. High priority.


(In reply to Olli Pettay [:smaug] (high review load, please consider other reviewers) from comment #13)
> It really would be nice to have mxr (http://mxr.mozilla.org/seamonkey) to
> link to some instance of ViewVC (or some other tool showing the blame)

No promises, but I'll see if we can get DXR to do that.
Flags: needinfo?(gps)
:gps never mind. I'm not sure why I assumed one could clone from viewvc. :-) /me tries to remember anything about cvs. feh!
Flags: needinfo?(gps)
FWIW, searchfox.org provides now pretty much all the functionality I need: fast and easy way to use blame and version control history going back to 1998. It has still some issues in file renames, but those are being worked on.
I think I was leaving this assigned to me so we could better "productionize" Bonsai. I have some unlanded commits sitting around in my user repo to do that. But I'm not actively working on this. So unassigning.
Assignee: gps → nobody
Status: ASSIGNED → NEW
You need to log in before you can comment on or make changes to this bug.