• (disco)

    Again? http://what.thedailywtf.com/t/source-history-information-tool/48258

  • (disco)

    -sigh-

    Paula's at it again....

  • (disco)

    Can somebody fix TDWTF to prevent multi-versioned, concurrent front page comment topics?

  • (disco)

    At least this one is the real comment thread!

  • (disco) in reply to HardwareGeek

    You want to lock up @PaulaBean in a bathroom stall?

  • (disco) in reply to HardwareGeek
    HardwareGeek:
    fix TDWTF

    YMBNH

  • (disco)

    Sometimes things produced in the bathroom are the same things produced in code. Maybe Bob knew this by heart?

  • (disco)

    So basically, SVN is terrible software because you can't lock files?

  • (disco) in reply to Jaloopa

    Didn't we have a heated discussion about that not too long ago?

  • (disco) in reply to Jaloopa
    Jaloopa:
    So basically, SVN is terrible software because you can't lock files?

    They're actually right but for the wrong reason. SVN is terrible because it has the merge-then-commit paradigm. IOW, if someone else committed a change to a file you're working on, you have to update first to get their changes. Which can indeed clobber your code.

    A proper VCS would let you commit and then merge your changes with the other guy's.

  • (disco)
    When I go to the bathroom, I have exclusive use of the stall.

    If there's a bathroom, why is everyone else having to put up with his shit?

  • (disco) in reply to boomzilla
    boomzilla:
    A proper VCS would let you commit and then merge your changes with the other guy's.

    So until you merge there are two incompatible versions of the code in the repository? Doesn't sound optimal to me. What's wrong with seeing and confirming what will change before it's pushed there?

  • (disco) in reply to Jaloopa
    Jaloopa:
    So until you merge there are two incompatible versions of the code in the repository?

    We call these "branches." You may be familiar with them.

    Jaloopa:
    What's wrong with seeing and confirming what will change before it's pushed there?

    Yes, that's what a decent VCS should do. I'm just saying it should let you commit your changes as your changes, period.

  • (disco)

    SVN includes locking specifically for this case. I've used it in the past to help development teams transition from a locking SCM to a branch+merge one. Why would Michelle think she need to writes to write her own hack?

  • (disco) in reply to Jaloopa

    In a proper VCS, "commit" and "inflict" are two separate actions. Commit means that the state of my code is saved--inflict means that I've forced the state of my code onto others. You can commit, then grab everyone else's changes, clean them up together with another commit, and THEN inflict.

  • (disco) in reply to fournm
    fournm:
    "inflict"

    Heh...I like that. Very blakeypropriate.

  • (disco) in reply to Jaloopa

    But... you can?

    *goes off to install TortiseSVN to test*

    AwesomeRick:
    SVN includes locking specifically for this case. I've used it in the past to help development teams transition from a locking SCM to a branch+merge one. Why would Michelle think she need to writes to write her own hack?

    :Hanzo:'d because not a reply to that post...

  • (disco) in reply to sloosecannon

    Either it's an anonymisation failure and the original submission was about a VCS without locking, or the submitter is TRWTF

  • (disco) in reply to Jaloopa

    +1

    @frontpageeditor, was it a different vcs or was Michelle trwtf?

  • (disco) in reply to Shoreline
    Shoreline:
    When I go to the bathroom, I have exclusive use of the stall.

    If there's a bathroom, why is everyone else having to put up with his shit?

    Management has to approve flushes so they don't happen very often.

  • (disco) in reply to sloosecannon

    @snoofle has a forum account, though ...

  • (disco) in reply to aliceif

    BUG REPORT: @frontpageeditor does not send an @mention to the front page editor

  • (disco)

    Perhaps they could implement some kind of shingle or thatchery based device, and only allow the person in control of said device to alter the critical files. Surely that is a better solution than just assuming conflicts can be easily merged in the few cases they occurs.

  • (disco)

    In essence, these guys don't trust the merge part of merge-then-commit.

    And, in an absolute sense, they are right. It can screw them over in hard-to-predict ways.(1)

    But of course the correct way to express that distrust is, shock, horror, to test the code in between merge and commit...

    (1) Consider an ill-advised change of the type of a variable, such as signed char to unsigned char. If my (new) code relies on the signed-to-signed promotion implied by a cast to signed int, I will be screwed over when the promotion changes to unsigned-to-signed. My later x >= 0 comparison will also not do what I want (where x is the signed int that received the after-cast value), as it becomes "always true" in a way that's hard for a compiler to detect.

    Automated Unit Testing will probably detect this, but might not in all cases.

  • (disco)

    When I go to the bathroom, I have exclusive use of the stall. Others can only use it before me or after me, but not at the same time as me. We need this same level of isolation in handling our source code

    SVN is more like having a second toilet spawn next to you that someone can use that, when they flush, goes down the same pipe as yours.

  • (disco) in reply to MattSayar
    MattSayar:
    SVN is more like having a second toilet spawn next to you that someone can use that, when they flush, goes down the same pipe as yours.

    So… Git is like everyone having their own toilet and sometimes asking each other if it's OK to throw some shit over the barrier between the stalls?

    Sounds reasonable to me.

  • (disco)

    I used to think TFS was a decent VCS, until I learned you can't merge your changes with the new main code while "unshelving" a file, defeating the point of shelving them in the first place.

  • (disco) in reply to dkf

    And flushing requires you to read a long manual (possibly written on the toilet paper), get just the right sequence of wiping, writing things on the wall of the stall and pressing the flush otherwise it all goes wrong and the excreta goes all over you. Then people tell you you're an idiot when you complain you're covered in shit

  • (disco) in reply to Jaloopa

    Do I dare ask what a rebase is in this analogy?

  • (disco) in reply to hungrier

    Is it worse than shelving?

  • (disco) in reply to Steve_The_Cynic
    Jaloopa:
    So basically, SVN is terrible software because you can't lock files?

    Well, no, as I understood it, it is bad because you might find someone sitting on your lap in the bathroom, as you sit on the john.

    fournm:
    In a proper VCS, "commit" and "inflict" are two separate actions. Commit means that the state of my code is saved--inflict means that I've forced the state of my code onto others. You can commit, then grab everyone else's changes, clean them up together with another commit, and THEN inflict.

    And, let's see, what happens if you never inflict?

    (Love that terminology by the way...but I don't think it's a standard use. And I'm not sure I would like it when you inflict your code on me.)

    Steve_The_Cynic:
    And, in an absolute sense, they are right. It can screw them over in hard-to-predict ways.(1)

    Which is why merge must be processed by a brain—otherwise, the VCS would handle it automatically. The person doing the merge needs to decide if complete retesting of the module is required not only for the individual changes, but also for the merged change. They can't just flip those two versions together and hope.

    To some degree, I can sympathize with "Bob and Jim," because there are exposures when two people work on the same file.

  • (disco) in reply to aliceif
    aliceif:
    You want to **pick** up @PaulaBean in a bathroom stall?
    This is what my mind read when I looked at your post.
  • (disco)

    So... the problem is that developers may need to communicate with one another, and possibly engage in thinking when conflicts arise. They also would lose the use of "I can't work on that now, the file is locked" as an excuse for doing nothing all day.

    Those are both pretty chilling prospects. I can understand why Michelle's changes needed to be stopped.

    I would say that this sounded a lot like somewhere I used to work, but the development team there was already "using" Subversion. They just needed a little assistance from the sysadmin team whenever they ran into something complicated.

    Like creating a new branch. Or making a release. Or resolving conflicts of any kind. Or spelling "commit" with the correct number of 'M's.

    You know, really specialized advanced stuff that most programmers should never need to know how to deal with.

  • (disco) in reply to CoyneTheDup
    CoyneTheDup:
    Which is why merge must be processed by a brain—otherwise, the VCS would handle it automatically. The person doing the merge needs to decide if complete retesting of the module is required not only for the individual changes, but also for the merged change. They can't just flip those two versions together and hope.

    To some degree, I can sympathize "Bob and Jim," because there are exposures when two people work on the same file.

    All of which was, more or less, my point. Usually, the mechanical aspects of the merge can be handled automatically by the VCS, and all of them are good at finding when they just can't proceed automatically (i.e. when they find conflicts). However, the programming-language semantic aspects are more difficult, and Bob and Jim may also have been accustomed to how they had to handle binary conflicts in VSS (something it does more or less as badly as it handles anything else), and didn't trust SVN to do anything sane with them (which is as difficult for them as it is for VSS...)

    VSS had(1) some epic issues - the loopiest was in v6 when you used the admin tools to create a repository, and then to validate the state of the new repository and they routinely found errors that needed fixing - but one of the most breathtakingly stupid was the fact that a bunch of metadata about files was not versioned. This bunch included the name, whether the file existed, and various filetype flags (especially the binary/UNIXtext/DOStext/Mactext flag). Yes, you heard it, that information was NOT versioned, and affected the entire history of the file every time you changed it. Oh, and all timestamps in file histories were in client-side time (UTC I think, maybe), which imposed a requirement that all machines involved in the development process had their clocks automatically synchronised by NTP or some equivalent. OK, that's a good idea in its own right, but when you used VSS, it was essential. Individual VSS repositories did bad things when they exceeded 2GB in size, whether that was from millions of small text commits or from three files of 800MB that had been checked in once each, with no second revisions.

    No, even the thought of using VSS for anything is terrifying. The idea of someone opposing migrating their codebase away from it is just staggering.

  • (disco) in reply to dkf
    dkf:
    So… Git is like everyone having their own toilet and sometimes asking each other if it's OK to throw some shit over the barrier between the stalls?

    Sounds reasonable to me.

    Except it doesn't go over the barrier, but down and up through the plumbing, occasionally with significant force. Don't make me explain what that means when you're perched on your toilet.
  • (disco) in reply to hungrier

    Fecal transplants

  • (disco) in reply to Onyx
    Onyx:
    HardwareGeek:
    fix TDWTF

    YMBNH

    Yes...after a year of DissedCourse, I concur!

  • (disco) in reply to mott555
    mott555:
    Management has to approve flushes so they don't happen very often.

    But...that increases the risk of an overflow! FFS, can't this be delegated?!?

    Jaloopa:
    Then people tell you you're an idiotDoing It Wrong™ when you complain you're covered in shit

    FTFY, :hanzo:'d

  • (disco) in reply to CoyneTheDup
    CoyneTheDup:
    it is bad because you might find someone sitting on your lap in the bathroom, as you sit on the john.

    That would be bad. However, it might be a solution to @mott555's problem. Or else another unhandled failure mode, if BuildingSearchParameters.ClosestOption does not imply BuildingSearchParameters.FirstEmptyOption.

    CoyneTheDup:
    They can't just flip those two versions together and hope.
    They can, and all to often do.
  • (disco) in reply to boomzilla
    boomzilla:
    A proper VCS would let you commit and *then* merge your changes with the other guy's.
    And it would have the left/right difficulty select located on top as first-class switches, not relegated to little slide switches under the front lip.
  • (disco) in reply to dkf
    dkf:
    So… Git is like everyone having their own toilet and sometimes asking each other if it's OK to throw some shit over the barrier between the stalls?

    Sounds reasonable to me.

    And the sewage treatment plant is responsible for merging all those branches and squishing the conflicts together.

  • (disco) in reply to AwesomeRick
    AwesomeRick:
    SVN includes locking specifically for this case. I've used it in the past to help development teams transition from a locking SCM to a branch+merge one. Why would Michelle think she need to writes to write her own hack?

    I just assumed that the story was from back in the dark ages before Subversion had locking. Which was about the same era as the last time I knew of anyone actually using VSS.

    Even file locking can't protect you from dipshits. 'Round about 20 years ago I worked in a VSS shop. The "lead" developer just plain didn't get the concept. He would go for weeks making changes to his local copy of the code, without touching version control. Then he'd lock all the files, copy his local files to his working directory, and commit. Merge? What's that? I defy anyone to design a version control system that can prevent that very special level of jackassery.

  • (disco) in reply to narbat

    I defy anyone to design a version control system that can prevent that very special level of jackassery.

    I have a system that can treat that level of jackassery, but not prevent it. It involves percussive cognitive recalibration with synthetic poultry substitutes. (Swat them on the head with a rubber chicken until they stop being jackasses.)

    The success rate in field trials has been about 70% effective. Later this year I intend to use live, rabid skunks in place of the rubber chickens, and I am expecting compliance to increase to 95%. The remaining 5% are being recategorized as "Acceptable collateral damage."

  • (disco) in reply to Wesley_Long
    Wesley_Long:
    I have a system that can treat that level of jackassery, but not prevent it. It involves percussive cognitive recalibration with synthetic poultry substitutes. (Swat them on the head with a rubber chicken until they stop being jackasses.)

    I like @Steve_The_Cynic's tool for preventing future occurrences. He keeps it in his back pocket.

    Filed under: http://forums.thedailywtf.com/forums/p/27839/325235.aspx#325235

  • (disco) in reply to Onyx
    Onyx:
    HardwareGeek:
    fix TDWTF
    YMBNH
    You will note that I said "fix TDWTF," not "fix Discourse," which can only be fixed by completely destroying it.

    Filed under: "We had to destroy the villageDiscourse to savefix it.", Yes, I know that is the distorted version of the quotation., There is more than one definition of "fix."

  • (disco) in reply to DCRoss

    I've been using svn for about 10 years now, and I don't know how to spell commit - too many m's and t's. Too many letters in general. Fortunately, "ci" is REALLY hard to screw up.

  • (disco) in reply to hungrier
    hungrier:
    Do I dare ask what a rebase is in this analogy?

    Did you see the end of the episode of Red Dwarf when they went to the backwards planet?

  • (disco) in reply to Jaloopa
    Jaloopa:
    Is it worse than shelving?

    When you say shelving, are you talking about those old-fashioned German toilets with an actual shelf on them so you can inspect your crap for worms?

  • (disco) in reply to narbat
    narbat:
    Merge? What's that?

    I've seen the same sort of thing done with both CVS and SVN (and actually shouted at an otherwise very nice and able developer over it). At least there you've got the history and figure out relatively easily WTF just happened and fix it.

  • (disco) in reply to Steve_The_Cynic
    Steve_The_Cynic:
    Automated Unit Testing will probably detect this, but might not in all cases

    If it doesn't, then you are "Doing it Wrong".

Leave a comment on “Source History Information Tool”

Log In or post as a guest

Replying to comment #:

« Return to Article