Sounds good to me, on first sight. :)
But then: If a changeset should be able to reference one or more other
changesets, I guess that would mean a change of the format and older
versions of subversion cannot deal with it.
But then again, I have no idea how merge tracking could be done anyway,
most likely it would involve an incompatible change in all cases.
Russ Brown wrote:
> While in the shower this morning I had an idea about how merge tracking
> could be implemented in Subversion which would offer a great deal of
> I know that this may have already been considered, but in case it hasn't
> I may as well write it down and post it in case it's useful.
> The problems I can see are:
> * Merges in SVN are actually just regular changesets, and therefore
> look like any other change. Subversion has no way of knowing whether a
> given changeset was a merge or just a change.
> * Subversion doesn't know what changesets have been merged to a given
> branch from anywhere else.
> * Merging destroys history. If I merge from a branch that many
> developers have worked on to trunk, all of the changes will appear to
> have been made by me. svn blame will have my name written all over it:
> the original authors recieve no credit (or flack) whatsoever.
> * Merges take up space in the repository, even though the deltas
> applied already exist in the repository (on the source branch).
> My idea to fix all of these problems is to allow a changeset to
> reference another changeset (or list of changesets).
> For example, say you have trunk which represents production and a
> feature branch. Several developers work on the feature branch, making
> several commits.
> When performing the merge to trunk, Subversion would examine the
> changesets on the branch and which of those had already been merged from
> that branch, and compile a list of changesets. Subversion then commits a
> changeset containing the new revisions, recording them against the
> trunk. When developers update, it references the changesets in the merge
> changeset and applies the deltas.
> svn blame now also knows who wrote every line originally: full history
> is maintained because history is referenced, instead of being copied.
> Less space is taken up because you're just referencing changesets
> instead of storing entire deltas again.
> Now say there's a merge from trunk to branch. More work is done, and
> again they merge from branch to trunk,
> This time, the branch contains a changeset that is a merge from trunk.
> Subversion knows that the changesets referenced by that merge are
> already on the trunk, so it doesn't merge them again.
> Thoughts, comments?
To unsubscribe, e-mail: email@example.com
For additional commands, e-mail: firstname.lastname@example.org
Received on Mon Sep 12 10:57:57 2005