From: Fred Marshall on
Jerry Avins wrote:
> http://www.joelonsoftware.com/items/2010/03/17.html is about version
> control. If you use VC software, it might be worth reading.
>
> Jerry

Well, I'm no expert in this although I've had to deal with it a bit.

What I don't understand is how merging "changes", including skipping
"changes", can be easy because there may be interdependencies between
them. With versions presumably that can't be a problem unless there are
branches.

Fred
From: Erik de Castro Lopo on
Fred Marshall wrote:

> What I don't understand is how merging "changes", including skipping
> "changes", can be easy because there may be interdependencies between
> them. With versions presumably that can't be a problem unless there are
> branches.

Well I've been doing DVCS since about 2004 (GNU Arch) and I came to
it because of the merging and cherry picking possibilities.

For me merging a change happens when I have a stable main branch and
a development branch where I'm working on something new. Then, during
that new development I find something that needs fixing. I fix that
problem and commit it as a single commit and then merge it from the
the devel branch into the main.

Of course this only works if you are in the habit of committing in small
chunks and only commiting working code. I've been working this way for
some time and at times, when I'm really in the flow, I will do 10
or more commits an hour for 3 hours at a stretch.

HTH,
Erik
--
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/
From: Steve Pope on
Vladimir Vassilevsky <nospam(a)nowhere.com> wrote:

>Steve Pope wrote:

[SVN and CVS]

>> I have used both, I find both usable, and in basic usage
>> they behave nearly identically.

>> What do you see as the key problem in the underlying model?

>1. They keep track of *files*, not *changes* to the files.
>2. They have to keep everything in one dedicated place.
>
>If the large project is branched out, merging between the branches could
>be a royal PITA in this model. As in the article suggested by Jerry, I
>have to do the code with zillion of if() and #ifdef instead of branching.

I guess I look at it from the other direction... it is
good to have as few branches as possible, and so one should
use whatever forms of polymorphism are available in
one's programming languages (including scripting languages,
build languages, etc.) to reduce the number of branches.

Better support for branches is of course good, because
sometimes you cannot avoid them.

Steve
From: steveu on
>Vladimir Vassilevsky <nospam(a)nowhere.com> wrote:
>
>>Steve Pope wrote:
>
>[SVN and CVS]
>
>>> I have used both, I find both usable, and in basic usage
>>> they behave nearly identically.
>
>>> What do you see as the key problem in the underlying model?
>
>>1. They keep track of *files*, not *changes* to the files.
>>2. They have to keep everything in one dedicated place.
>>
>>If the large project is branched out, merging between the branches could

>>be a royal PITA in this model. As in the article suggested by Jerry, I
>>have to do the code with zillion of if() and #ifdef instead of
branching.
>
>I guess I look at it from the other direction... it is
>good to have as few branches as possible, and so one should
>use whatever forms of polymorphism are available in
>one's programming languages (including scripting languages,
>build languages, etc.) to reduce the number of branches.
>
>Better support for branches is of course good, because
>sometimes you cannot avoid them.

While endless branching is hard to see as a good thing, the "few branches
as possible" mentality mostly comes about *because* you have used CVS. It
has moulded your way of thinking, because it makes merging such a PITA.

Steve

From: Steve Pope on
steveu <steveu(a)n_o_s_p_a_m.coppice.org> wrote:

>While endless branching is hard to see as a good thing, the "few branches
>as possible" mentality mostly comes about *because* you have used CVS. It
>has moulded your way of thinking, because it makes merging such a PITA.

If you're going to merge a branch, why branch off in the first
place?

I have a little trouble conceiving of cases where branching
ever makes sense, other than political/legal situations
(i.e. you need to form a code base that is clean of certain IP,
for example). And then you're probably not going to merge
later on, other than again from some political event (i.e.
a command decision by a project manager).

Polymorphism is there; use it.

Steve