[MERGE/RFC] Use Branch.pull() to update master branch.
Robert Collins
robertc at robertcollins.net
Wed Feb 25 21:47:20 GMT 2009
On Wed, 2009-02-25 at 12:07 -0600, John Arbash Meinel wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Jelmer Vernooij wrote:
> > The attached patch makes the commit code use Branch.pull() to update the
> > master branch when committing to a bound branch.
> >
> > This is required for bzr-svn as it can't update just the repository, it
> > has to update the branch as well. Previously it had some magic in the
> > Repository.fetch() code to handle this, but that is vulnerable to race
> > conditions. (#248289)
> >
> > Is Branch.pull() the right call here, or should I be adding something
> > custom?
> >
> > Cheers,
> >
> > Jelmer
> >
>
> This might be ok. I think the main problem is that we can't update
> self.last_revision until after the data has been fetched to the master.
Thats not a problem.
> So 'new_rev_id' doesn't *exist* in the source branch. So the code
> as-written means that branches must support pull() with a revision that
> is not in their ancestry.
Well, triggering a pull hook on commit would be a bug.
The code today does
if bound:
fetch-to-master-repo
master.set-last-revision
Thats fine; it triggers the pre and post tip change hooks for master. I
think its fine to keep it like that but to wrap those two calls in a new
function, or use a function like push() which is close enough in intent.
Jelmer - update_revisions or push are closer than pull, but possibly we
do want a more precise function. Also please avoid using
generate_revision_history, its evil.
-Rob
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20090226/2c694870/attachment.pgp
More information about the bazaar
mailing list