On 02/03/2007, at 4:13 AM, Dennis Birch wrote:
>

> The version control output is more easily readable than the XML
> output, but in a largish project can produce hundreds of separate
> files. Unless you know exactly where to look for changes (and if I
> did, most of the time I wouldn't need to compare project source) it
> seems to me comparing all those files would be incredibly laborious.

Folder comparisons make this no more laborious than comparing a  
single file.

Actually, as an experienced hand-merger of files for many years (I  
used to insist on manually merging changes so I could see what was  
happening), I think you're exactly wrong.

Comparing many files with a reasonable diff viewer means changes  
within a file are localised within that file and there's no confusion  
by insertion of other files.

It is also obvious when a class has been renamed as the files won't  
match - you will see an unmatched file DennisCanvas.rbbas on one side  
and DoubleClickCanvas.rbbas on the other, so you can manually compare  
those two.

If you have something which has had many classes inserted, maybe some  
renamed, within a single file, it is far more difficult to do a  
comparison. Trust me - the OOFILE source for reasons of 8.3 filenames  
(yes it is that old) has many classes within a few C++ source files.

The topic of "knowing where to look for changes" is like saying you  
are performance tuning without profiling. One of the causes of sneaky  
bugs is inadvertent code changes in the wrong place, eg: either  
because your window focus was in a different place or you did a  
search and replace with different scope from your intentions. There  
are bugs in RB2007r1 which make it easier than you'd expect to do such.

Doing a diff between versions ensures you have a chance of finding  
such changes. If you don't do a diff (when tracking down a bug which  
"appeared between versions") then you may take longer than needed to  
find the cause.

The most bizarre example of inadvertent code change I can think of  
happened with someone working for me. We had an argument about coding  
style - I have an uncommon style in C++ of putting braces on the same  
line as a condition.

if (something) {
    do stuff
    more stuff
}

instead of the common

if (something)
{
    do stuff
    more stuff
}

One of the main reasons for my style is that if you accidentally  
delete the line with the condition, you get a compiler error. If the  
opening braces are on the next line, you just get an unconditional  
block with local scope.

The *very next week* after the argument, this guy found a bug in his  
code caused by precisely that - he had deleted the if() statement.

However, it wasn't him that deleted it.

We eventually found we had a dodgy Ethernet card in that Mac and when  
he transferred the code, entire lines OCCASIONALLY went missing.

I would struggle to believe that you could have something losing  
entire lines of text that only managed to damage a file in such a way  
that it still compiled but it is true (and you can imagine how long  
it took us to prove!).

I would have had a disagreement with someone about my C++ coding  
style maybe a couple of times a year.
This experience widened my appreciation of the laws of probability.


> In the meantime, I would suggest that the original poster open his/her
> projects in RB 5.5.5, export the source, and use the Compare files
> feature in TextWrangler or FileMerge.

I can't remember exactly which but there was something significant  
missing from that export - events or menu handlers?

That's why I wrote my BBEdit Text Factory to cleanup the XML so I  
could compare XML.
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to