| I just spent the last several days setting up an SVN server and configuring Xcode to use it. It's a shining example of a task that should have been quite simple but is fraught with danger. Here is some background for my question, you can skip the dividers if you want: ------------------------------------------------------------ By default, it excludes .a files from the repository, meaning that all of the carefully built libraries in my engine (and more importantly the copies my associates use) don't get uploaded. After spending the last several hours on the following wild goose chases: ~/.subversion/config
global-ignores = *.a *.la
svn status --no-ignore
svn add --no-ignore *.a
svn propset svn:ignore -R
svn propdel svn:ignore -R
And hoping the following commands would exist (they don't seem to): global-no-ignores = *.a *.la
svn propset svn:no-ignore
svn propset svn:ignore NO *.a
I have come to the conclusion that it may be impossible to tell svn to NOT ignore certain files that it ignores by default. I do have access to the server and can probably tell it not to ignore .a files. But this concerns me, because if we move to hosted solution somewhere, I may not have that level of control. Or I can recursively check for new .a files each time I commit and add them if they are missing. I have not found an ideal solution.P.S. This is the tip of the iceberg, yes I have considered that perhaps I should build all libs from scratch on each dev machine. Yes I have considered not keeping third party libs and sources in our repository. And so on. P.P.S. I found far more problems with svn than just this. To name a few, svn update has problems if there are unversioned items in the directory (it doesn't offer a clean way to automagically merge them into the repository). It can't handle special item names like Apple's Icon0x0D files. It creates a .svn folder in every folder. There is a looming minefield having to do with line endings. Binary files and special folders like "build" are not handled elegantly. Hidden directories like .libs were missed. And so on and so on and so on. ------------------------------------------------------------ After using svn, I see now why Linus made git. Unfortunately, it's not supported by Xcode (yet). And also unfortunately, Linus doesn't have the fraydar to know when a solution is getting mired in complexity. Git may be a little too cryptic for mortals. Now, my real question is this: I deal with these sorts of situations day in and day out. 90% of my time and effort goes towards working around things that are broken that should not have been broken in the first place. I spend hours reading Stack Overflow posts, forums and mail server archives. I nearly always find the solution. But what if I can't? What if after several days, I arrive at a dead end? And worse, what does this constant rat race do to our productivities and psyches? Will we ever be free of the menace of unimaginative tools and methodologies? This may be the question of our time, at least, as hackers. Because that's what hackers do, they hack at problems until either they or the problem is destroyed. But I am becoming concerned that maybe that problem is with the problems themselves. Maybe header search paths were a bad idea. Maybe shared libraries and DLL hell were a bad idea. Maybe installation at root instead of the user path was a bad idea. Maybe the entire hard drive should be version controlled. Maybe regex created more problems than it solved. Maybe powerful but unreadable languages like perl and bash created a generation of programmers who do the mental equivalent of wiring houses with all the same colored cables. Maybe the web should have just hosted and parsed .doc files so the masses could have made their own websites 15 years ago. Maybe permissions in OS X use a stricter but much more brittle inheritance than the parent inheritance of OS 9. Maybe the problems are even grander than the scale of the ones that I have faced in just the last few days. Maybe I could go on forever but I am even starting to question what I know and don't know. Maybe I should have blogged this. Maybe I should be out buying christmas presents and spending time with my family. There is IRC and countless startups attacking this problem, but what if, like politics, there is no easy solution? What do you do? WHAT DO YOU DO??? |