LWN.net Logo

Distributed bug tracking

Distributed bug tracking

Posted May 14, 2008 21:22 UTC (Wed) by aleXXX (subscriber, #2742)
Parent article: Distributed bug tracking

Although I'm still not convinced from DVCS, the idea to have the bugs in 
the same directory tree as the project sounds like a really good idea to 
me.
I mean, with regular bugtrackers like mantis, bugzilla, Trac you have to 
dig through a big database of bugs by using the right search fields.

It would be so much more productive if I could just do something like

CMake/Modules/$ ls
.....
FindQt4.cmake
... more files

# now ask for bugs:
CMake/Modules/$ buggy list FindQt4.cmake
   #1234 "It doesn't work"
   #1345 "Sometimes it fails"
   #3454 "If I do something wrong, it fails" 
CMake/Modules/$ buggy show 1234
   Title: It doesn't work
   Reporter: Karl Karlsen
   Note: If Qt4 isn't installed, FindQt4.cmake doesn't find it !
CMake/Modules/$ buggy change 1234 nochangerequired
CMake/Modules/ $ cd ..
CMake/ $ buggy list
   #1 General: "CMake works too good"
   #2 
   ...
   #1345 FindQt4.cmake: "Sometimes it fails"
   ...

Also for a huge project like KDE this would be a huge gain I could 
imagine.

I also have the suspicion that this will need really tight integration 
with the VCS (which I think doesn't necessarily have to be a DVCS).

A comment about DVCS: now honestly, is "committing to a local repository" 
really worth that much ? I mean, it is still on my local harddisk. So it 
is not backed up as on a central server. Still nobody else can see the 
code, so there is no peer review yet. Still nobody else can test the 
code. Doesn't this encourage big commits later on to the official/main 
tree, which are too big to understand easily ?
I completely agree that having version control also for local files is a 
vey nice thing, but IMO this is different from using a VCS for 
development.

Alex


(Log in to post comments)

Distributed bug tracking

Posted May 14, 2008 21:53 UTC (Wed) by iabervon (subscriber, #722) [Link]

The local commit thing means that (a) you can use the version control system to checkpoint
states where you've done some good work, but it's currently broken as a whole, and you're
about to risk totally messing everything up; (b) you can commit your state before resolving
conflicts with other people's work, so you can retry resolving if you mess up in your first
attempt and lose all your work; (c) you can look at what you've committed and realize that
it's ugly, incomplete, or something like that, after you've put together exactly what you're
planning to send in but before you send it; (d) you can do a dozen related commits, each
self-contained, and as a set leading up to the last one, which adds a feature, and you can
deliver the set together; (e) before you submit a series, you can reorganize it into small,
clean commits that total the big chunk of work you've done.

My experience is that centralized systems lead to commits that each make all the changes
necessary to implement a feature, but touch a lot of different parts of the code, while
distributed systems lead to small focused commits, which are separate changes but all arrive
at once.

Distributed bug tracking

Posted May 15, 2008 3:33 UTC (Thu) by robertknight (subscriber, #42536) [Link]

> Still nobody else can see the 
> code, so there is no peer review yet

Linus amongst others would argue that is a major benefit of DVCS.  Sometimes a programmer will
have an idea which they want to be able to play with without telling the whole world about it
- which is what happens if you create a branch in SVN. 

Good reasons for keeping code private, at least initially:

* The idea may turn out to be impractical or stupid.  In that case you won't upset anyone
because nobody else knew about it and you won't leave 'dead-end' branches lying around in the
main repository.
* People may appreciate the ability to work on something for a while without subjecting it to
criticism until they are ready.
* There may be competition within the project or in competing projects. 
* The code might not be suitable for inclusion in the main code base - it might be a
modification of the software to meet the needs of a specific company for example.  

In addition to secrecy, there is also the case where developers want a branch to handle their
specific needs which are not useful to anyone else.


> Doesn't this encourage big commits later on to the official/main 
> tree, which are too big to understand easily ?

Not necessarily - because users can easily browse the history of the merged branch and see the
individual changes which went into the final merge.    

One big practical advantage of course is speed.  Branching, merging and viewing history can be
very slow in SVN if the server is under load.  In git/bzr etc. creating a new branch is
instant and checking it out normally takes only a few seconds.  Merging is also trivial and
again takes only a few moments in most cases and it isn't affected by what is going on at the
remote end.  Being able to get a near-instant log is also very nice.  Having to wait two
minutes for "svn log" to fetch the history of a particular file is pretty frustrating.

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds