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
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.