Distributed version control systems (Lecture)

This is a presentation I just gave on Bulgarian Java User Group (BGJUG). The topic is Distributed Version Control Systems (DVCS). The main DVCSs mentioned are Mercurial and Git.

Here it is:

Btw, consider it absolutely free. But if you mention my name I'd be grateful.

5 thoughts on “Distributed version control systems (Lecture)”

  1. Can you elaborate on slide #23 / 30? Git is left, Mercurial is right?

    Git has the "git-svn" tool, which integrates with SVN quite well -- even copies the entire history. Not just do "svn checkout" and then import that as the first GIT commit -- it really does capture the entire history, making git commits for every SVN revision. I also have the advantage of already using it in a real-world project -- it works beautifully, except maybe some quirks when you work excessively with trunk and branches (branch often, merge the features from the branches to trunk and then delete the branches).

    Git also has these: git-cvsimport, git-cvsserver. Think these are self-explanatory. 😉

    Can you explain the "scattered" point?

    Git has an immutable history and mutable index.

    Also, what does "straightforward vs. flexible" mean in the terms of a DVCS?

    1. Hi,
      When I researched the topic this was not the case - no or bad git-svn integration. Especially when the inventor of Git (Torvalds) says all the things he says about SVN/CVS. I was pretty sure the community would rectify this gap and as I see from your comment - it did.

      On the "scattered" point - well this is not really a software - it is a bunch of pieces of functionality bound together. Especially when you take into account the fact that these pieces of software are not all written using the same language, some of them are pure scripts. I'm pretty sure, however, that this is going to improve with the years to come. Someone is going to simplify it and make it better. I'm not really following what is the progress of this process.

      Straightforward vs. flexible means that in Git things may happen in more than one way, while Mercurial authors like to have a pretty straight-forward process which either-way has pros and cons.

      I'm pretty happy that someone read the presentation and commented.


      1. On the "scattered" point, I just think Torvalds moved forward to a new philosophy, namely "not everything needs to be written in C++", which I strongly approve, but that is of course a subjective matter. Bottom line is: the collection of tools who form GIT does work. 😉

        As for the straightforward thingy, I have no idea about the different ways to do the same thing in GIT, but then again, I never looked for such a thing.

        Thanks for asnwering.

  2. As far as I see these distributed VCS (Version Control systems) are actually client-server VCS with availability for easy synchronization (push) with so called parent repository (if any).

    1. They can do this kind of synchronization but you're missing the point - they can do so much more.

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.

This site uses Akismet to reduce spam. Learn how your comment data is processed.