}n Sat, May 21, 2005 at 06:01:26AM -0400, David Roundy wrote:
> On Sat, May 21, 2005 at 10:34:23AM +0200, Vigor van Ort wrote:
> > Hmm..  No, the snapshot repo is basically the vendor branch -- it only
> > contains changes from the vendor, I never pull into the snapshot repo
> > from local mods.  I do submit changes back to the vendor, and so they
> > will eventually become incorporated in future snapshots.
> 
> This is something darcs isn't going to do well.  Darcs is really designed
> to work with darcs and other collaborators using darcs.  Working the way
> you are is pretty much guaranteed not to work, and that's not going to
> change.  What you want is a tree-based SCM, not a patch-based SCM, since
> you're interfacing with a series of trees, not a series of patches.
> 
> On the other hand, you might be able to hack around things to merge your
> changes with upstream from time to time.  If you ever get to a state where
> your local tree matches upstream, you could pull all your changes into the
> vendor tree, which would be helpful.

I think it is not an unusual scenario to run darcs locally
and communicate with an upstream source in non-darcsish ways.
For me, darcs is the _only_ source I communicate with using
darcs.

Even if all upstream switch to darcs, the "vendor branch"
(as in CVS) will always be a real issue, since not all
"vendors" will expose their repos but only supply tar files
of new versions.


Vigor,

There's a way to work with two darcs repos, one following
a remote source and one with local changes (that flow back
to the remote source "outside" darcs), the way you wish.
I do this with all upstream sources I follow (except darcs),
and so far it has worked great.

You want to perform a three-way merge between the changes
from some base to current and upstream, and record the result
as a new "syncing with upstream" patch in the local repo,
that is, to merge in only what's "new" (file-three-wise)
in upstream into the local repo.

The three sources and the merge can be retrieved and performed
with any tools, but they can also all be done with darcs.

Branch local repo.  Replace _darcs in the branch with a copy
of _darcs in old upstream repo.  Record a "local changes"
patch.  Update upstream repo and create an "upstream changes"
patch.  Pull the "upstream changes" patch into the branch.
Resolve any conflicts.  Replace _darcs in branch with a copy
of _darcs in local branch.  Record a "syncing with upstream"
patch and push it to local repo.  Done.

If the merge turns out to be slow and there are many changes
in local that are also known to be (exactly) the same in new
upstream, they can be reverted before the "local changes"
patch is recorded, to avoid long merge times due to same-same
conflicts.


-- 
Tommy Pettersson <[EMAIL PROTECTED]>

_______________________________________________
darcs-users mailing list
[email protected]
http://www.abridgegame.org/mailman/listinfo/darcs-users

Reply via email to