From: Steve B. <sjb...@ai...> - 2003-06-18 14:22:47
|
Don Heyse wrote: > Here's a suggestion. TkCVS. I used it when checking in changes for > John because that way I could tell ahead of time which files weren't > up to date, and which files were going to need merging. Examining > the differences first in the tkdiff window made me feel a lot more > confident about letting CVS go ahead and do it's thing. CVS did the right thing in this case. It's just unfortunate that we abused it in a particularly subtle way. We've actually had this problem before. Everything would have worked fine except that changes that were done on a Windoze machine were moved onto a Linux box without removing the carriage returns from the line endings. Then when the files were checked in, every line looked like it had been changed - so instead of doing a merge, it overwrote every single line. In detail: * When you check out an ASCII file from CVS, it knows whether the target computer needs UNIX-like (LF), Windows-like (CR+LF), or Mac-like (CR) line endings and sends you the file in the right form. * When you check that file back in, again CVS checks your machine type and strips out all of the line endings that are native to your machine, replacing them all with LF's. However, if you check out under Windows (so you get CR+LF endings), then copy that file over to Linux without stripping out the CR's, then when you check it into CVS from the Linux box, CVS thinks you have LF endings and the CR's are not stripped out. Then, no matter who checks out the file, it's is all screwed up. What's worse is that those unwanted CR's made CVS think that every line in those files had been edited...so it replaced them in the archive, overwriting Brian's changes. This project is vulnerable to that problem because John Fay has to work under Windoze from behind a particularly annoying ".mil" fire-wall that doesn't allow CVS check-ins. Hence, he always needs a buddy outside his firewall who can accept changes via email and do the check-in on his behalf. The problem is that the volunteers who help him typically have Linux...so this problem has happened before! Another common problem is when you have a binary file and you forget to tell CVS that it's binary. So long as you only work under Linux or some other UNIX derivative, everything works fine - and it's only MUCH later when some unfortunate Windows or Mac user happens along to check out the file that everything blows up because and 0x0A bytes in the file (LineFeeds) get replaced and your binary file is horribly corrupted. ---------------------------- Steve Baker ------------------------- HomeEmail: <sjb...@ai...> WorkEmail: <sj...@li...> HomePage : http://www.sjbaker.org Projects : http://plib.sf.net http://tuxaqfh.sf.net http://tuxkart.sf.net http://prettypoly.sf.net -----BEGIN GEEK CODE BLOCK----- GCS d-- s:+ a+ C++++$ UL+++$ P--- L++++$ E--- W+++ N o+ K? w--- !O M- V-- PS++ PE- Y-- PGP-- t+ 5 X R+++ tv b++ DI++ D G+ e++ h--(-) r+++ y++++ -----END GEEK CODE BLOCK----- |