- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Hey, I didn't know you were a coworker of mine. What floor are you on? I say we band together and raid IT!
Admin
I don't get how people can be against source control. I'd never used it in school, but at my current employer (and my first) we use ClearCase, I'd never develop large applications without it again.
Also, how does one bypass source control? Here, we make our branches, and have a release team responsible for merging everything into a release branch and building from that. If you bypass source control, your work doesn't make it into the release. Granted the release team won't deal with non-trivial merges, so we usually make our own un-official release branch and give that to release to merge into the official release branch and build.
Admin
I can't fathom not using source control.
It's a bloody fundamental tool of software development, and it's absurd not to use it. There is absolutely no excuse. It's simple and reliable.
If you were a mechanic, would you forgo buying wrenches?
Admin
Depends, is your name Merv?
Admin
Well, you're not completely wrong in that, yes, the production site does ultimately pull the code from the SVN repository. But just doing an "svn up" live in the wild is a ghetto way of doing things. You would typically use a tool that does the basic update from the repo and a lot of other necessary housekeeping; Depending on your environment you might use capistrano (RoR) or do some magic with massive deployable WAR/EAR files in Java ...
Admin
Based on how the story was worded, it seems like everybody checks out to the same server and works out of the same working directory. Which is a WTF in itself.
Admin
Maybe so, but that's how were 'supposed' to do things here...
Admin
I don't doubt that you're right, but that's the established procedure of how were supposed to do things. Maybe that's the actual WTF...
Admin
It seems to be a trend on here lately that all the source control stories are by people apparently using terrible source control, all of them would be prevented by any rational source control package. My question is if everyone uses source control except Joe, how does he ever keep any of his work? This would just keep happening to him, everything he does would eventually be overwritten
Admin
Joe, is that you? hehe, just kidding.
Typically people use seperate tools for deploying vs source control. So you would code on your machine and check your changes into your source control system.
Then your continuous integration system on your build server would get the latest version of the code, perform a build of it, run any unit tests that you might have and deploy it if all the tests passed.
So you should really not be editing anything on that final server.
Admin
My first job, I had one of those. He would always talk about, "when we wrote Unix..." but he was pretty much incompetent with it, and I can't imagine that he had anything to do with it. Part of my reason for that is the next fact: He would also talk about his Congressional Medal of Honor, which I now know is BS. 95% of the people who go around claiming to have a CMH are liars (the other 5% are real heroes).
Many places I have worked since then have been slow on the uptake of version control, or haven't done it in a reasonable way. It's one of the things I always insist on. There's no sane way to do a project otherwise.
And going with version control is the idea that your web app should be an installable product, meaning that it isn't married to the particular infrastructure, and that it can be easily installed in an isolated test / dev environment. Many places don't understand that and how problematic it is to violate that.
Android seminars - the future of mobile platforms
Admin
Maybe his source code is useless and nobody cares about what he eventually writes
Admin
Right. I have never had an instance where "saving time" and "cutting corners" did NOT come back to bite me.
I know it sounds cliche, but it gets truer every day for me.
Admin
(1) If at all possible (and the only constraints are disk space and installation time) take a back-up of all important files before every installation. Otherwise roll-back is ahem problematic. (2) In the typical case, the set of files on the production server is nothing like the set of files in source control. Things like databases probably shouldn't be under source control at all (bar a SQL dump file of the DDL). Things like configuration files are almost certain to differ between development, test and production. Even script files may well differ radically. And then there's "emergency patches" on the production machine -- we've all been there, even though we shouldn't have.
Bottom line: put a significant amount of effort into developing an installation procedure, complete with documentation, tick-boxes (yeuch, but good in this case for use as a personal audit trail when the inevitable goes wrong), basic sanity checks and a proper roll-back procedure.
Checking out directly from source-control just doesn't cut it; not even for a simple web site using PHP. Looks like Joe was just a tiny sub-set of the WTF-heads out there.
Admin
I'm not sure that installing ClearCase is necessarily the best solution here.
Admin
I worked at a place a while ago but could only take it for two months. In my interview, I checked with the 'technical director' what development tools and source control system they used. He replied, very smugly, that they had the latest Visual Studio and VSS.
When I started the job, I found out that they did indeed have Visual Studio 2005 and the latest VSS, but unfortunately they were both sitting in neat shrink-wrapped boxes in a filing cabinet.
We actually worked with VB6 and didn't bother with the luxuries of source control. Any changes you made were done to the live server. After the first time I lost 3 days of work because someone had overwritten it, I ran subversion locally on my computer and prevented the problem ever happening again (to me).
Working with a live server certainly instills a work ethic of getting something right first time ... though more often that not, a bug crept in and everyone was in a state of panic for hours on end. Ahhh ... happy days ...
Admin
Wow, I thought only desktop support peons like myself took "@$$-whippins" like that.
Admin
In my company, people have been fired for avoiding using the SVN repository. It's taken very seriously.
Admin
But then it's nonsene, because the only way to edit the repository's contents should be by checking the stuff in.
How could Merv overwrite Joe's working copy? Or was this "source control" setup like that Joe could edit the repository directly? Then it was bollocks.
Admin
Agreed on the pushing of changes directly onto the live server. For the larger sites I maintain, I would never do it that way. Plus, those sites tend to be run by a CMS (Drupal) + MySQL so a simple repo of their files wouldn't apply.
Where I'd like an improvement in workflow, it's with a number of mini-sites I publish. They consist of HTML, PHP, CSS, and JavaScript. The contents are more or less static text within the HTML files. The internals are very basic; they work off some templates that I reuse. There's no DB backend, logging, etc. Once in a while when a file needs to be tweaked, it'd be nice to maintain version control.
However, I also don't need a complicated deployment strategy either. A simple "svn update" should work in that case. Anyone disagree?
Admin
"svn export" is better for deployment.
Admin
I'm pretty sure I've worked with Joe. Joe is his real name. He has those ticks and some others which are worse. He likes to verbally attack new people with considerable viciousness. And he routinely regards himself as being above all the rules, even ones that the entire programming world knows are just a good idea, like version control.
Any attempt to get the manager to understand how much harm Joe does is wasted effort—years of effort, in my case. It was a major reason for my departure.
Admin
And I'm sure neither your co-workers nor your "technical director" would understand how SVN works and would still think that zipping files is the only reliable way of handling source code. You may end up having a discussion like:
I fucking hate when people just don't want to understand that source control is not only a major plus, it's supposed to be a damn requirement. And why the fuck is it so hard to understand that there are source control tools better than SourceSafe? Why do some people say "We're going to use SourceSafe", as if they were doing something innovative? For fuck's sake, it's ridiculous.
Admin
WTF
Admin
The word "costed" is a WTF in and of itself.
Admin
Especially as SVN's free software, and that must mean it's scary and threatening to all they hold dear. Or at best means that they have to relearn everything they know. And probably feel guilty about owning an Audi and everything.
Admin
Sounds like their source control operation was implemented in a very WTF way as well. It sounds like they had a single working copy for all or at least >1 developer. At least that's how I read it when it talks about his checkout overwriting the jerk's changes.
Not using source control is just a horrible failure. Using it in a moronic fashion is a true WTF.
Admin
Its kind of like having the whole company by the yarbles...
Admin
You must have been under the table with a tape recorder at my last job... :(
Admin
Been there.
Frankly the first thing I ask about any new job is what source code control is in use. The second question concerns bug tracking software.
Far too often the answers are: None and Excel.
Ugh.
Admin
Mine would be: None (except for SVN which I started using myself for three projects) and a horribly unusable and slow Notes-based ticket system with no workflow support, horrid attachments support (you can attach files but can't download them, go figure), no way to view tickets assigned to other developers, etc.
Admin
What kinds of jobs are you applying for?
Admin
Admin
Hmm. PEBKAC. What you are experiencing is default behavior. Do not panic. Have a latte.
By default my scc (source control client) will not overwrite files if the readonly bit has been cleared. It does prompt me though to overwrite. The scc will usually assume that that since the file is not readonly that you've gone ahead and modified it without using the scc to 'check out'. When you check in a file the scc usually sets the file to readonly to indicate that action. It's a pretty lame mechanism, but scc's are typically pessimistic and assume a writable file is a file that has been modified outside of it's control.
So, to sum up, source control clients are not installers - it's a repository of files with history, that when used properly, helps keep everyone's changes in sync.
Dev's usually create installers/packages for dev/test/stage/production with each having slightly different settings. Automate as much as you can to have a repeatable process.
Now take the correct package and install it. The scc client is only used in step 1. Don't run scc on production.
Admin
Wait,the real WTF is what the fuck source control system overwrites everything, and not just the module that's changed?
Unless Merv and Joe were editing the same file, any source control application should have just overwrote that one file; anything that Joe was working on should have remained untouched, if it wasn't modified.
Admin
Unfortuantely, the people who dislike source control are often also the people who dislike everything else which is usually taken for granted as standard practice. The number of times I have heard managers saying: "Yes, those things are fine for other software companies. However, our business isn't the same as theirs and we can't use standard off-the-shelf tools. We'd write our own if we had time, but we're just too busy."
Normally, the reason they're too busy is because they're constantly fire-fighting problems caused by not having bug tracking or source control. Meh.
Admin
Distributed version control is for you then.
Start working with git or darcs, push patches to each other's machines without the need for it to be installed on the server.
You can still submit your forms, and hope to get it up on the server as well, but in the meantime, it's much better.
Admin
A DVCS can be a good idea even if you're not going to push/pull changes to/from other machines. I even used PortablePython+Bazaar inside a company that had a very strict policy like : "The use of free software, including freeware, opensource, etc, is forbidden". Developers were constantly afraid of changing the source code, zipping several versions of the same project. As of me, whenever I did something wrong, I just needed to roll back to a previous revision.
Admin
I think an explanation was left out.
Why is Joe still working there? Why hasn't he been fired yet?
Admin
Some idiot musta checked in a change and blew away comment selector functionality.
Admin
To everyone who can't imagine not using source control... Until BitKeeper, Linus Torvalds didn't. He used patches and tarballs.
Me, I've practically grown up on easy source control -- tools like bzr and hg make it trivial. When setup is "bzr init", there's really no excuse...
Well, unless the previous revision will be mirrored all around the world. As Linus says, "Backups are for wimps. Real men upload their data to an FTP site and have everyone else mirror it."
So if your name is not Linus Torvalds, there really is no excuse...
Admin
Common occurrence in mainframe development. In that kind of setup there (often) is no "local machine" except the dev server.
Actually when reading the story I was almost certain that the story was from a certain mainframe installation in Denmark. Only differences:
Leaving that place was, well, not a tearfull experience...
Admin
Having SCC and not have access to test/qa/etc. locked down bogs my mind.
Admin
... and that's the real WTF.
Either that, or the fact that Joe's boss hasn't been sacked for not sacking Joe.
Admin
cant you check out previous versions in most if not all source control systems? i think joe needs a swift and sharp slap up-side the head tbh - if he acted like that towards me id tell him where to go.
Admin
How I see the situation: They are developing a web app in php or similar and have just one dev web server with php installed. So everyone does their development on the files in the dev server. Joe is editing some php files on the dev server, has all his changes done. Merv checks a file out from source control to the dev server, thus overwriting the file that Joe has edited. So all Joe's changes are overwritten. The only thing that doesn't support this hypothesis is that the checkout did not warn on seeing the file was different to the version in the repository, but maybe some SCCS behave like this?
Admin
that's the thing with randomness :P
Admin
Actually, there is one and only one reason I've never used formal source control in my work. I've never worked in a team larger than.. well... 1. I occasionally worry that my lack of source control knowledge will be a barrier to getting a job on a larger dev team in the future; but then I come and read TDWTF and realise that I'm probably not so badly off after all ;^)
Admin
By 'wrenches' you mean 'a time machine'?
Admin
Still no excuse! I have recently started using SCC for my hobby projects at home and it still has great benefits even when there's just you. You feel less constrained about changing things as you know you can always go back and look at how the code used to be. You have a documented history of why you made each change, which is useful when you're looking at some ancient code and wonder just why you did it like that. You can easily tell which is the latest version if for example you are doing web development and changing the web site from various machines - just download the version of the web server and look at differences to your current machine.
It's not that hard to get up to speed. You just need to get a mental model of the system in your head. svn is quite easy to set up and tortoise svn is a gui for windows that means you don't have to remember all the svn syntax and repository paths. There are other front ends for other platforms if you're not using win. Then you can add it to your resumé.