[merge] Re: iterating over revisions in a branch
Jamie Wilkinson
jaq at spacepants.org
Wed Jan 4 15:06:55 GMT 2006
This one time, at band camp, Jamie Wilkinson wrote:
>This one time, at band camp, Jelmer Vernooij wrote:
>>On Wed, Jan 04, 2006 at 11:56:24PM +1100, Jamie Wilkinson wrote about 'iterating over revisions in a branch':
>>> Rob gave me a hint on how to iterate over revisoins in a branch:
>>
>>> for revision_id in branch.revision_history():
>>> revision = branch.get_revision(revision_id)
>>
>>> It occurred to me just now that it doesn't feel right. If I'm iterating
>>> over revisions, I shouldn't have to extract the revision during the body of
>>> the iterator loop, surely instead of the revision id I should get back the
>>> whole revision?
>>
>>Efficiency. The list of revision ids can be read directly from the
>>.bzr/revision-history file. Reading the revision itself requires reading
>>the appropriate file in .bzr/revisions/ (amongst other files).
>>
>>If, for example, you would only want to do something with the last two
>>revisions, that would not require reading all revisions that exist in
>>the revision history. Also, for things like 'revno' (which is
>>basically length(branch.revision_history()) the revision contents don't
>>matter.
>
>Ok.
>
>Still, I think that something that returns an iterator over the *id*s of
>revisions should be named as such, from an OO point of view. I'm still
>surprised that revision_history() didn't give me a list of Revision objects.
>
>Would it be worth making Branch.__iter__() perform this function?
>
> for revision in branch:
> print revision.id
>
>Or if that's not readable, a .revisions() method?
>
> for revision in branch.revisions():
> print revision.id
>
>Also, the efficient revision_history() as it stands doesn't feel useful
>outside of bzr internals. Well, sure it's efficient, but as a programmer
>using the bzrlib API I don't care about the internals of bzr, and well, I'm
>back to the OO argument: if I'm iterating over revisions, I want a Revision
>object :)
I shouldn't have had a coffee after dinner, I can't sleep. So, I went and
implemented it:
http://repo.spacepants.org/bzr.jaq/ revno 1530
including smoke test and update to NEWS.
More information about the bazaar
mailing list