Boost logo

Boost Users :

Subject: Re: [Boost-users] What's happened to Ryppl?
From: Klaim (mjklaim_at_[hidden])
Date: 2011-01-29 14:00:21


Hi,
I'm not a boost contributor (yet) and maybe can be considered novice so take
my advice knowing that.

On Sat, Jan 29, 2011 at 11:08, John Maddock <boost.regex_at_[hidden]> wrote:

> * I happen to like the fact that SVN stores things *not on my hard drive*,
> it means I just don't have to worry about what happens if my laptop goes
> belly up, gets lost, stolen, dropped, or heaven forbid "coffeed". On the
> other hand the "instant" commits and version history from a local copy would
> be nice...

I have the same kind of concerns.
I've only started using Mercurial (hg) in the middle of the last year and
I'm not an expert but the decentralized way of doing things changes a lot my
point of view. (I used SVN before)

The decentralized nature of the repositories moves the organization
responsability from the tool (like in SVN) to the user (like in any DSVC).
What I mean is that as every developer have a full repository, or several
clones, the communication of changes between repositories is only driven by
the contributors/team organisation.

For this specific point, habing a non-local clone of your work, here is what
I'm doing for all my projects now:

1. On my laptop, that I use in transit, I have one repository of my project.
You could say it's my "trunk", comming from the SVN world.

2. On the same laptop, I have several clones of the 1. repo. In each, I work
on experimental features that I often just delete after some tests. If the
feature is good enough, I "push" the changes (the commits that have been
done in this local repo) in the repo 1.. That means I have to merge before
sometimes as I still work on 1. for the main features, and I kind of work
like if I was a big team alone. Anyway, I already can fork for myself with
decentralized repositories, allowing me to experiment more easily.

3. I have another repo on my home desktop. That's a clone from 1. with some
other works that require me to have several computer screens available, so I
work on those features mainly on my desktop. In fact I swith from laptop to
desktop often, and often make sure both are synchronised. I don't know about
how it's done in git but hg (using tortoise hg or not) can setup an http
server for you that will listen for pull and push requests. So it's
super-easy to just transfer changes between my computers, from 1. or 2. or
3., to any one of them. In fact, I start to build some kind of hierarchical
relation between my repos (that becomes natural when you understand the
potential of "cloning"/"forking"). So I have two computers as various
backups.

4. I don't trust my hardware very much, and sometimes I need to have changes
from my desktop in my laptop but I'm too far from it, like in another city.
So, I also keep another repo in my online server (an ubuntu box that I loan
mostly for websites and SVN repo, nothing special). In this repo I push
changes from laptop and desktop that are not experimental.
By the way, hg works with ssh so it's incredible to see that you just have
to clone a repo to make it available online via ssh (if it's not public, or
with more security if it is). You don't have to launch any server (other
than the one to manage ssh).
My online server is kind of a more secure backup that is available from
anywhere.

5. I also have other repos on my servers that are for my personal work that
is experimental but takes a lot of time. So I still have an online available
backup.

6. I have some friends that want to work with me on my project. I've setup
clones for them on my private server, one for each user. They can work
however they want on their local computers and simply push their changes in
my private server, on their dedicated repository on my server. When they
think they made works that can be used and is complete, and is all pushed in
their repo, they mail me to make me review their changes, comment and if all
is fine then pull the changes in the "truth" repo that merge all the team
effort. That truth repo is in fact a clone of mine that I call the "team"
repo. But anyway I can call it what I like, it's just an organisation
matter. Like setting up the "graph" of your team :)

7. In fact, some of my projects are open-source (not worth showing here and
it's not the point) so I have additional repositories in bitbucket.org and
google code hosting. That way, anyone can do like any teammate from my
private projects. It's just that the repository is available publicly in
read-only access. To "write", people have to ask me to review their code,
then if I htink it's worth and follow my standards for the project, I pull
the changes and add a line somewhere about who contributed to what. For open
source project, public repos are my "trust" repos, where I pull all work
that is valid and finished. Note that bitbucket and github allows you with
"one click" as pointed by Dean to clone a repo. That allows you to work on
your version for a time, pull public changes while you still work on your
features, then ask for the maintainer of the truth repo to get your changes.
Or not.

8. I don't trust all hosting services, so I've setup scripts that pull all
public and private changes in separate backup repos.

9. I didn't even started to talk about branching. Branching is kept in the
repositories history, while forking is not. I have branches for features
that are required, not experimental, but are long to implement.

So, for the security of backup problems, it diseapear because it's easier to
setup any dsvc hosting than with SVN (because there is no need for a server
to listen).
Some other points in my description might help to understand why
decentralised changes everything when coming from SVN.

Someone (Dean?) did that analogy some time ago : SVN/CVS are like mutexes
over a container while DSVC are like lockfree containers.
That's, I think, the most accurate analogy of the differencies between the
two.

I have not used DSVC for years because I thought that it was not worth it in
team environnement, "because" of the decentralized nature. In fact I tried
only because it was good for one person project in my mind. I must say I was
totally wrong, it's the exact opposite.

That said, I'm juste a "junior", so again take my experience as such.

Joël Lamotte



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net