[patch] fix bug 48136 bzr status, diff, etc do not work properly after remote push

John Arbash Meinel john at arbash-meinel.com
Fri Oct 27 17:53:46 BST 2006


Matthew D. Fuller wrote:
> On Fri, Oct 27, 2006 at 11:10:31AM -0500 I heard the voice of
> John Arbash Meinel, and lo! it spake thus:
>> 2) 'bzr revno' should probably be the revision of the working tree
> 
> Ideally, I'd say it should say both (maybe collapsed down to 1 if
> they're the same).  I'm a bit leery of changing it, though; if ever a
> bzr command were written as if to be used as "plumbing", 'revno' is
> it; most people frown on programs that blow up their scripts.  I don't
> know how big a concern that is in the community at this point (or how
> assiduous we want to be about preserving such things pre-1.0).
> 

I think the best thing would be to have a flag which lets you select one
or the other. And then pick a reasonable default.

> 
>> 3) 'bzr log' should show the revisions of only the working tree,
> 
> This I'm a little more iffy on; I think of 'log' as referring to the
> branch.  But that also veers even FURTHER off course, and belongs in
> another email that's currently brewing in my mind.  Maybe I'll acquire
> a round tuit for that together later today...
> 

To me 'bzr log' tells you the history of something. And that can be the
history of the current tree state, or the history of a branch.

If we decoupled the linear history of a branch from the DAG (like git
does), then you would have to have a branch to get a clear idea of the
history.

And then you have to wonder what happens when your working tree revision
isn't in the branch history anymore. (A push --overwrite can change it
to just about anything).

> 
>> And we also want to be aware of heavy versus lightweight, and try to
>> get them functioning in unison as much as possible.
> 
> And don't forget also that we have a third form of working tree; that
> directly associated with a branch.  I may (and do) want to fling that
> around old versions and back to head too.  And it's the one that gets
> out-of-date from a 'push', too.

Actually, the way the code is written, that is really just a lightweight
checkout that resides in the same directory as the branch it points to.

This is mostly because *real* lightweight checkouts have a branch
reference, that automatically proxies to the reference when you try to
open it. So the rest of the code doesn't actually know when you have a
lightweight checkout versus a standalone branch, other than checking
that tree.bzrdir.transport.base != tree.branch.bzrdir.transport.base.

This may change a little bit, in case we want to make BranchReference
lazier about dereferencing. Which allows operations that don't need to
connect to the branch to actually avoid connecting entirely. (Right now
'bzr status' connects, and then doesn't do anything with it. Though 'bzr
status -r FOO' would need to connect)

John
=:->

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 254 bytes
Desc: OpenPGP digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20061027/6e7b9f80/attachment.pgp 


More information about the bazaar mailing list