Tuesday, May 3, 2011

Another rogue for the gallery

Archiving previous versions of computer code is a good idea. I can't--much less won't--argue that. Trust me, I've borked too much code to say otherwise. I rarely miss an occasion to slag Subversion (and its front-end TortoiseSVN) to the point where it's almost a personal vendetta. I'm fully cognizant of that.

But, seriously, all I was trying to do was merge changes from a low-priority fix that had languished in testing for months. Which is when I got this error:



(Note: Server names blacked out for security reasons.)

Basically, what it's saying is that I'm trying to change some server-related property (bundled as meta-data with the actual file changes being merged) from A to A, but that it's current property is B. Something that I think rational adults would agree is a contradiction: You can't change something from A if its value is actually B.

The backstory, as it turns out, is that we changed the name of the server that actually hosts the Subversion repository (i.e. its cache of code-history) between the time I originally committed my changes to it and the time QA gave me the green light to pull them out and push them out to the next stage. It was the mis-match of URLs that was causing Subversion/Tortoise to freak out.

Unfortunately, that took the intervention of Those Who Know Best to sort out. And the whole episode is not exactly a glowing recommendation of software that's supposed to serve a haphazard distributed batch of programmers and a code-base liable to splinter off at any moment.

Now. I've done any amount of damage in Mercurial, and I personally think that the "ignored file types" feature could have been much better thought out. But the bottom line is, nearly all the grief I've come to using it to archive my code can be attributed to my own ignorance and/or stupidity. Not--and I can't stress this enough--just trying to accomplish boring day-in-day-out tasks like merging code.

- - - - -

Correction, 05.04.2011: The URL in question is actually that of the server we use for bug-tracking (issues now show the files involved). My bad...don't ask me what I was thinking with that being the repository server. Except that it might be more understandable. Sigh.