Skip to main content

Daniel Jomphe's Library tagged vcs   View Popular

03 Nov 08

Git changes how developers manage source code versions - SD Times On The Web

  • It decouples the notion of checkpointing from publishing. In Subversion, those are the same thing
  • Git lets developers experiment with the whole of a project, without worrying about breaking things or losing work
  • 2 more annotations...
01 Oct 08

An introduction to git-svn for Subversion/SVK users and deserters

  • Not only is the implementation fast locally, it's very network
    efficient, and the protocol for exchanging revisions is also very
    good at figuring out what needs to be transferred quickly. This is
    a huge difference - one repository hosted on Debian's Alioth SVN server took
    2 days to synchronise because the protocol is so chatty.
    Now it fits in 3 megs and would not take that long to synchronise
    over a 150 baud modem.
  • Disk might be cheap, but my /home is always full -
    git has a separate step for compacting repositories, which
    means that delta compression can be far more effective. If
    you're a compression buff, think of it as having an arbitrarily
    sized window, because when delta compressing git is able to match
    strings anywhere else in the repository - not just the file
    which is the notional ancestor of the new revision.

    This space efficiency affects everything - the virtual memory
    footprint in your buffercache while mining information from the
    repository, how much data needs to be transferred during "push" and
    "pull" operations, and so on. Compare that to Subversion, which
    even when merging between branches is incapable of using the same
    space for the changes hitting the target branch. The results speak
    for themselves - I have observed an average of 10 to 1
    space savings going from Subversion FSFS to git.

  • 48 more annotations...

Mark Shuttleworth » Blog Archive » Merging is the key to software developer collaboration

  • We must keep the cost of merging as low as possible if we want to encourage people to collaborate as much as possible. If a merge is awkward, or slow, or results in lots of conflicts, or breaks when people have renamed files and directories, then I’m likely to avoid merging early and merging often. And that just makes it even harder to merge later.
  • The beauty of distributed version control comes in the form of spontaneous team formation, as people with a common interest in a bug or feature start to work on it, bouncing that work between them by publishing branches and merging from one another. These teams form more easily when the cost of branching and merging is lowered, and taking this to the extreme suggests that it’s very worthwhile investing in the merge experience for developers.
  • 1 more annotations...

SVN 1.5

  • that's not the whole picture.



    First and foremost you forgot the disconnected part. You can't commit to Subversion unless you can reach the repository, which is often in a server over the Internet.



    Also, each developer isn't restricted to one branch. He very often has a lot of them. Right now I have 28 separate branches of Qt in my workstation: they range from previous stable releases of Qt (to test regressions and fixes with) to branches I created to start working on fixing tasks to research projects.
  • And that's just my private branches. When I am collaborating with other people in projects, I have more branches. For one project right now in Qt, we are tracking 4 or 5 different branches, each with a different "theme": optimisations, new features, animations, etc. And there's an extra branch which is the merger of all those "theme branches", so that we can get a feel of what it will be when it's done.
  • 2 more annotations...

InfoQ: Distributed Version Control Systems: A Not-So-Quick Guide Through

  • Major reason is that branching is easy but merging is a pain
  • Subversion has no History-aware merge capability, forcing its users to manually track exactly which revisions have been merged between branches making it error-prone.
  • 5 more annotations...

David Bock's Weblog : Weblog

  • You see, branches and tags in CVS are different things. But in subversion, they are the same - they are just copies of the trunk into one of those directories. In CVS, these events are temporal... that is, they affect a file at a given point in time. In Subversion, while they still apply to a particular version of a file, branches and tags are spatial... that is, they exist as copies of the trunk, just copied into a specially designated place.



    This 'branches' and 'tags' convention in subversion is actually limiting, and somewhat false. Since they are really the same thing, I can modify the contents of a 'tag', which is impossible in CVS. I have come to believe that while this convention is useful for projects converted from CVS, it is misleading, limiting, and harmful for new projects. I want a new convention

  • As long as I am coming up with a new convention, what other things might I want to address? First, I like to have a place 'close to the code' where management documents like requirements, meeting minutes, and the like can be stored, but these kinds of things rarely (if ever) need to be branched. I also like Maven's convention that allows for directories of different kinds of source to be part of the same project. Taking all this into account, here is my new convention:


    /project
    /code
    /head
    /rails
    /java
    /versions
    /design
    /management
  • 1 more annotations...

Discipline...

  • And then git... If I look at what happens in the linux kernel development community, I see the best developers being permanently busy with merging, merging, merging and merging and very little else. And, actually, a scheme where we only seldom integrate, where every developer at one, infrequent, moment publishes their branch for merging sounds like a recipe for integration hell, no matter how developer-friendly and good at branching and merging a tool might be.
  • The Linux kernel development process is not very similar to KDE's of course. The overhead of what's going in is higher, it's quite formal and bound to specific persons that decide it all. KDE is quite different in that it's team-based, so potentially making it easier to share code in those teams and merge it upstream as it becomes interesting for others until finally bugs have been shaken out and it's ready to go into trunk.
1 - 20 of 31 Next ›
Showing 20 items per page

Highlighter, Sticky notes, Tagging, Groups and Network: integrated suite dramatically boosting research productivity. Learn more »

Join Diigo