Home > Coding, Rants & Opinions > Good version control needs to be …

Good version control needs to be …

… topical.

CVS was a nightmare because it let you nest branches ad-nauseum: it simply created a new dot with a new numeral below where you were, e.g. if you branched 1.34.0.5 it became 1.34.0.5.x

SVN lets you create your own branch hierachy, just don’t count on anything to really understand it.

For many projects branches are significant ancestry points of the project. The version that supports Windows 8, 64-bit work, etc.

But this branching concept doesn’t help with agility, test management, feature management or anything but small projects.

A “topic” has a relatively short life time and is supposed to comprise a subset of changes, e.g. a particular feature, being prepared for addition to a branch. You might consider two types of topic, branched (that is, they are based on a specific revision of the branch they descend from) and floating (that is, they are represent a change set to the head of the branch they are descended from, whenever you refresh the working copy, the changes are shelved, the head is updated, and then the changes are re-applied).

The sole purpose of topics is for them to be merged upwards, e.g. when they’ve been tested and sanctioned.

There must be a VCS (aside from Torture-force, I mean perforce) that does this?

Categories: Coding, Rants & Opinions Tags:
  1. November 1, 2011 at 5:08 pm

    Your topic sounds a bit like branches in Git (ftp.newartisans.com/pub/git.from.bottom.up.pdf). Also how some people use branches in SVN (e.g. http://twistedmatrix.com/trac/wiki/UltimateQualityDevelopmentSystem).

  2. November 2, 2011 at 7:56 am

    We used ‘Plastic SCM’ for a while at my last job. It has some UI issues, but the branching support was spectacular (compared to perforce, which I’d used previously). They had a feature similar to what you described where you could make a branch based on the latest revision of it’s parent (which would automatically get the new versions of any files not checked into that branch on every update), or off of a fixed revision.

  3. Neil
    November 6, 2011 at 5:00 am

    If you find p4 tortuous, you’re not using it right!

  4. November 6, 2011 at 7:15 pm

    @tazle Apart from the floating part … I suppose it’s basically a more formalized concept of a shelf, i.e. local changes that are continuously rebase to the head of the branch you derived from.

  5. November 6, 2011 at 7:26 pm

    Hey! I need a branch. I can’t be bothered to use the mainline for my NEW K00L F33TURE

    p4 branch //depot/whateverthehellitis/.. //whereverthehellilike//…

    A code attack occurs.

    p4 integrate //… (my workspace to see how we’re getting on)

    p4 remembers where this shit came from.

    We’re good! Not only does it compile but it looks like the other team’s new stuff compiles too!

    p4 submit (the above shite)

    We now are not far from a position to “p4 -r -i TRUNK” the lot to back to the cowboy wild west where arrows are cheap to buy but expensive to fix.

    Neil.

  6. November 7, 2011 at 6:59 am

    Oh ffs, I shouldn’t comment when it’s late. Some of the syntax is wrong, but the spirit is there.

  7. Verdoso
    November 7, 2011 at 1:26 pm

    Distributed VCS like Git or Mercurial can work “basically” like you mention. They let you commit your own changes locally to a branch that you can share (then everybody updates against the same branch) or keep locally (so it is simply based on the root where you branched and you’ll merge with a shared branch when you are ready).

    The thing is, if I understood correctly, the process to refresh changes that you describe, shelve the changes first, update, then re-apply the changes would be just different from the “regular updates” if you had conflicts, otherwise shelving the local changes first and re-applying is the same as simply updating the remote changes. And conflicts are not resolved automagically so, how would that be different from the regular updates we have now? I’m surely missing something :)

  8. November 8, 2011 at 6:07 pm

    Your evil is all in your head ;-P

  9. slpr
    November 20, 2011 at 6:30 am

    kfsone :
    Your evil is all in your head ;-P

    lucky you, imagine they would be real!

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 217 other followers

%d bloggers like this: