- 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
On a wooden table?
Admin
This is even easier if you are using GUI frontends, as there is a nice checkbox which says "Force update" or something like that. Check it, and see how your update eats away all the local changes. This is useful if you want to "roll back" to the last commited version, though...
Oh. And by the way, VSS is the worst nightmare I've ever had to use. I prefer CVS with Cervisia as a GUI frontend.
Admin
I can't speak for CVS, but I am quite sure that this could have happened under VSS. When you're using the Visual Studio VSS plugin, and you try to sync with the repository, it will prompt for any checked-out files. It's not the default (I think), but there's definitely a "delete my changes and overwrite the file" button on the dialog. I know because more than one of our team devs has clicked it before.
Admin
This reminds me of my time in the Navy. A decade ago, I served in the Navy on a fast-attack submarine. The submarine community had just spent 1998 trying out some new-fangled technologies - compact discs and personal computers. The very first job I had when I reported aboard was to destroy the microfiche with all the boat's technical schematics which were being replaced. The old-timers kept trying to impress me with how small the CD's were and how great the whole thing was. I didn't want to upset my new shipmates so I pretended to be duly impressed. Yes, the entire CD library now fits into a single cabinet - that's great. And then we went to destroy the microfiche - and I discovered that I was impressed, very impressed. The microfiche weighed in around a couple tons and completely filled an entire room onboard, which was of course humidity and temperature controlled. Over the next couple days, as I hauled heavy boxes up ladders and across the pier to the burn building, I developed a great appreciation for the compact disc and for the opinions of experienced sailors.
Admin
The solution is already known, there should be 2 shingles per library as in dining philosophers problem ;)
Admin
I had a project at a locomotive manufacturer, and they had a repair shed I had to cross daily on the way to my cubicle. When someone was working on a locomotive, they'd hang a large (1' diameter) blue disk from the front that said "this sign only to be removed by the person who hung it," and it was to make sure nobody was under the locomotive, or wrapped around some moving part, while someone else try to ride off with it.
In other words, and desparately trying to get back on topic, this kind of problem predates computers by several times the history of computers.
Admin
"Not being a CVS user, I wondered why they would have lost data." I've used CVS since 1994. The story is BS (IMHO), CVS won't just delete local changes. CVS is far from perfect and there is a learning curve, but I've never seem it lose local edits as the commit process includes merging changes to the repository.
Admin
Wow! I worked at a dot.com in 1999 and we did almost the exact same thing for 3 critical files that for some reason were not in our source control system (VSS at the time, which may have explained that). We had 3 different single serving cereal boxes. Honey Nut Cheerios, Cinnamon Toast Crunch and another that I forget. Each one was the token for one of the files. Do change the files you needed to have one of the boxes on your desk. It was something that I still am amazed about almost 10 years later.
Admin
Obviously they need a simple thimble.
A simple thimble could cost less Than a single shingle would, I guess. So I think that the single shingle should Cost more than the simple thimble would.
Admin
Obviously, they needed a shingle pool where shingles could be color-coded to give priority. That way a developer would feel safe to make changes, and only need to check with all of the other developers with higher priority shingles. Of course, this would necessitate a Shingle Management Plan, that would also need to be maintained in the Shingle repository.
Admin
"The story's second half is nonsense. I don't know how the developer managed to wipe his local changes, but it doesn't work in the way the story suggests. On the one hand, CVS doesn't allow checking in if the repository version is newer than the local version."
Bullshit!!! I have personally committed stuff, had a co-worker commit their stuff and overwrite my change because they didn't have the latest version. Maybe SOME versions of CVS are smart enough to perform a version check, either that or the IDE you are using to perform CVS commits does not allow this, but you most certainly can update CVS without having the latest version.
Admin
HEAD ASPLODE
Admin
I'm so glad that IT has become so evolved that we have to look nearly a decade into the past to find a WTF. We truly live in an enlightened age.
Admin
We had something like that before switching to SVN. Golf balls. Each golf ball had the name and version number of a particular project, and whoever had the golf ball had the latest changes on his computer. This was actually my idea, as the environment I had entered was "whoever has the source code that most resembles the program in question must have the latest version", and I had been working alone until then. It lasted long enough for someone to need to shout "who has the golf ball for Admin 4?", but not long enough for it to actually break.
Admin
Admin
Here is a picture of said shingle.
http://i287.photobucket.com/albums/ll122/dlaio/shingle.jpg
And yes, Mark did truly hose up his local working copy. No one knows how. We now use SVN.
Admin
seems I've read this before...
Admin
Actually, no. CVS is NOT SourceSafe and doesn't require you to lock the files. Local modifications are preserved on cvs up no matter what.
Admin
I believe Mark commited his changes, and someone else deleted his code and commited. The subsequent update "deleted" Mark's code.
Admin
No, as bad as CVS is, it never was that bad, period. First, you cannot check changes to a file in unless you do have the latest version of the file. Second, local changes are never overwritten by update. Never. Period.
What are you smoking?! Updating from CVS server is, BY DEFINITION, bringing your local files there weren't the latest version up to date so that they are the latest thing after the update. So your claim isn't only incorrect, it doesn't even make any sense!
I offer you an alternative explanation: some user acted like an idiot and screwed up his local copy. Hint: it was the one that ended with broken copy.
Admin
There are ways that CVS or SVN can destroy changes. They involve user error for the most part.
I've had it happen as I've told on this site before. SVN tried to do a merge and somehow, we ended up losing all the changes we had made in the past 2 hours (during a frantic coding session - this was back in college). It was probably user error as we weren't terribly experienced with SVN.
The moral of the story is, this COULD happen and it was very likely just user error. Yes, typing "cvs update myProject" won't cause the above scenario but how many times do you hear a user say "all I did was click OK!" when really all they did was screw around with some random settings they shouldn't be touching?
Admin
Maybe be typed 'revert' instead of 'update'. They... um... both have the same number of letters... and... both have 'e's in them. Yeah, that's it. Whatever it was, be obviously did something else that lost his changes, and accredited that to the commit process.
Next on TDWTF : 'svn update' got me on spam mailing lists! I received spam only 30 seconds after running the update! Therefore, it's svn's fault!
Admin
Where's the WTF? It sounds to me like normal project evolution, and a bit of natural reticence against adopting new methodology, reinforced by actual weaknesses in the new system (CVS allows commit on out-of-date checkout? That sounds more like a WTF to me.)
Admin
It doesn't. Hence the vitriol directed against this article in some comments.
Admin
If you had just 'a piece of the shingle' could you modify only 'some of the libraries'?
Admin
Source Safe was easier to use before Microsoft bought it and called it Visual; we held back on upgrading to the first couple of MS-branded releases for that reason. It has since gotten better, and I think I'd say it's now a superior product to One Tree's original.
Admin
The 'S' in CVS is for SHINGLE !!!
Admin
You do know that the default SVN setup is unencrypted and not secure? You should be using https with mod_svn, although sometimes it's slow as hell.
Admin
Admin
Admin
I'm the guy who sent in this WTF, and I'd like to answer a few of the questions that have popped up:
Alex took some egregious "liberties" with my submission, some of which are pretty trivial, I suppose. We're located in Connecticut, not Idaho. Our system doesn't track the movement of classified information, it stores the info, handles things like pushing out updates, logs day to day activities, and basically just helps the sailors do their jobs. We basically house their documentation and give them a bunch of little apps they use to streamline their own processes, all while keeping everything nicely integrated and easy to access with a single sign-on.
I ain't astro-turfing for MS, like ever. VSS sucks.
You can step on somebody's changes pretty easily in older versions of CVS (we used CVSNT for our server). Whatever version we were using, it most certainly did allow you to check in out of date files. Nobody's changes were lost, though... that's just what some people inferred from the article. Anyone who's ever had to manage a repository for a decent sized group of developers in those days has had to unmangle a botched commit.
Admin
Admin
That's what I was thinking--when your source control system is taken from "Lord Of The Flies", you know you have a problem.
"'Kill the beast! Cut his throat! Spill his blood!'"
Admin
FIST!!!!!!!!
Admin
So which is it, trivial or egregious? :)
Admin
The situation I was referring to would be when you are using "watching", where it marks files as being edited in CVS (but not as a lock, just a warning to other users) and it switches the file from read only to read/write. You cam also do a "cvs unedit" which reverts your file to the original version, and removes the edited mark on the CVS server.
Needless to say, it's difficult to do what was described in the original article.
Admin
I pity any developer, even a person working alone, that does not understand the usefulness of source control.
Admin
I've actually used the shingle system on top of CVS. It was used to enforce consistent check-ins -- a developer would update and run tests, get the shingle (a rubber chicken, actually), update again, make sure the changes build and test out, and check in, and then relinquish the chicken. This was needed because CVS commits are not atomic (unlike SVN or Perforce).
However, by 1999, we had switched to Perforce, and I forced the place I moved to after that to do the same when I found they were still using CVS. CVS is ancient history. And, if you can afford it, Perforce is usually a better choice than SVN.
Admin
TRWTF is that many commenters don't realize that a cvs update -f is pretty much able to revert your changes ... but oh well...
Admin
I'm impressed. They managed to create a shingleton.
Admin
Dunno, I used to think the same, (i.e the Perforce / Source Despot / Vault line of SC was the way to go) recently I have really come to love SVN over.. well.. pretty much anything else really...
Admin
Admin
A place that I worked in my younger days involved dangerous machinery that broke or jammed frequently. Every single employee also carried a simple master lock. Any time we worked on the machines, we'd "lock out". Every person involved would snap his/her lock over some part that would physically prevent the machine from operating (and mangling an arm or some such.) The machine then could not be operated, either intentionally or not, until all locks had been removed.
Admin
As usual TRWTF is all the comments.
Admin
How it is conceptually different from "multiple checkout" in VSS?
Admin
Lord Of The Files?
Admin
Anyone else have to Google what a "shingle" was? I had never heard the term before. Until today, I thought shingles was a disease.
Admin
Our system involved a different stuffed toy for each module. Scalability was achieved when sticky labels were attached so that each developer knew that the blue dinosaur was the comms library while the green spotted monster was a certain client's GUI (uncanny resemblance).
The system fell apart when someone kicked the frog under the fridge and no-one could work on data definitions for a week. CVS was enforced soon afterwards.
Admin
We tried a system like this, but what ended up working for us in the end was as team leader, I had all the junior developers email their code to me, and then I would be in charge of merging it into the main trunk. The advantage of doing it this way was I got to do code reviews whenever a change was made, and was able to determine when one of the junior developers was messing up.
Admin
Didn't you read the article? A shingle is something that you pass around the team to make sure two people don't overwrite the same file. Sheesh!