GSoC2007 work
Mark Grimes
mgrimes at macports.org
Tue Jun 5 00:53:01 PDT 2007
On Mon, 04 Jun 2007 17:25:13 -0700, Blair Zajac wrote:
> Mark Grimes wrote:
>> On 6/4/2007, "Blair Zajac" <blair at orcaware.com> wrote:
>> I would imagine the last mile is being handled by subversion's roadmap,
>> but I would tend to think that in large multi-developer project's
>> something that coarse grain wouldn't be ideal.
>>
>> I didn't mean to slant this discussion into battle of the tools -- but
>> what I've researched (granted opted out of) doesn't chalk svnmerge.py
>> as a complete solution in the slightest.
>
> I think you're being a little dismissive here. For 90% of the
> merging people do, merging complete revisions and at a top level
> directory is sufficient.
Ya I most certainly am being dismissive, it's not on purpose it's easy
to lose sight on where svk extends svn, as for years svk has vested
energy on exactly this problem -- svk's no-brainer merge tracking has
saved my bacon more then a few times, simply because a small contingent
of developers I work with are branch happy while the rest don't
acknowledge there is anything but trunk (both dangerous, but the former
shouldn't be... or at least living with the others that are branch
happy shouldn't be) I think it's more of a question of where you want
to spend your time and not "can from can't do", which is the attitude I
think I originally aired. Of course you can do it... but wouldn't you
rather be focused on content then playing chess with your version
control system.
I'd have a general fear of branching with svn a la carte, but thanks
for the tip on svnmerge.py, I should reinvestigate it for the
colleagues that don't listen to my thunderous svk advocacy in the
hallways at the office. ;)
> We're not talking about the big project here for MacPorts. We use
> svnmerge.py in the Subversion project itself on feature branches.
> Here, most of the time you want to just merge changes from trunk into
> the feature branch en-masse to keep the branch up to date and not
> have to keep track of what you have already merged over. When the
> branch work is ready, you merge it by hand back into trunk.
Yeah if you don't care about double merging nor evil twins that is.
Unfortunately, evil twins have bit me all over the place in svn a la
carte.
> I use svk also, but more for having a copy of a repository on my
> laptop and being able to do commits then for its merge tracking.
The decentralization is just the most recognized feature, it's
certainly not the most powerful. When 2.0 was cut at the beginning of
2007, things got significantly more impressive on a few fronts
(http://bestpractical.typepad.com/worst_impractical/2007/01/svk_20_is_bette.html)
> We use branches at work all the time. Each developer gets their own
> branch and we use trunk to track what's in production web site (Java,
> HTML code). So we do svnmerge.py merges from trunk into each
> developers branch when they want to, and also use svnmerge.py for
> merge from the developer's branch back into trunk for when new code
> is being deployed.
Sounds like an architectural design crafted around coarse grain merge
tracking. At my work, we create functional branches that >1 people play
in. Without fine grain merge tracking it is hard to divvy up the merges
between developers... it does seem like the svn players in our repos
are afraid to branch, maybe from fear that the tree will diverge too
much from any lengthy work in a branch. Who can blame them, especially
when the trees themselves are not very atomic with respect to control
of what other developers are doing. There are countless examples of
evil twin problems, and in general it's hard to merge by hand when you
can't control other users that may be doing more immediate merges
between branches.
> In this case, svnmerge.py does all we need.
>
> Does svk support more fine grained branch management where the
> branches live on the server and not in ~/.svk?
You are still doing your work against a mirrored path that throws
svk:merge tickets all over macports directory structure, so I don't see
this as acting any different then dealing with local branches that
offer the same merge ticket system. svk can inspect remotely mirrored
svk:merge tickets on the macports tree just the same, so I would gather
your granularity is at the same level.
If you want to pull local branch management out of the loop, engage all
your svk commands against the mirrored path and that would basically
give you "svn" + merge tracking via tickets. This is not a way I've
ever operated, but I suppose it's completely conceivable since the
merge tickets litter the server svn repo as props.
Tying the fun tangent back to GSoC, it sounds like it [GSoC] being more
or less a student exercise then pair programming would benefit from
svnmerge.py or coarse grain merge tracking if branching is warranted or
even used discretionarily.
-Mark
More information about the macports-dev
mailing list