[BUG] Getting an empty knit tries to put
Robert Collins
robertc at robertcollins.net
Sun Apr 2 23:47:22 BST 2006
On Sun, 2006-04-02 at 17:56 -0400, Aaron Bentley wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Robert Collins wrote:
> | On Fri, 2006-03-31 at 14:48 -0500, Aaron Bentley wrote:
> |>In KnitVersionedFile.__init__, if self.versions() is empty, it will not
> |>only produce a new knit, but attempt to write it to the transport.
> |
> |
> | Right, this is by design: VersionedFiles exist on a persistent storage
> | place.
>
> So you're saying a VersionedFile must be a representation of a
> physically stored object?
Yes. This is a corollary to the basis of knits or 'revfiles' if we go
back some while where there is a persistent file that we can mutate, and
the in memory representation is typically just the index.
> If that is the case, I think an attempt to get a VersionedFile that
> doesn't exist should throw. But I think it would be a lot nicer if we
> could return an empty versionedfile without having to make it exist on
> physical storage first.
A readonly empty versionedfile would be doable, but ... why ?
> | The bug here is that Repository initialisation is 'lazy' and does not
> | create empty revision, signature knits.
>
> This is very unexpected behavior to me. An attempt to read should not
> cause an observable write. I think we will continue to have this bug
> appear in various places until we provide a readonly-safe API for
> VersionedFile.
VersionedFile has that api - its VersionedFileStore that is causing the
write request, and thats because get_weave_or_empty was called. If we:
* make the signature and revision files on repo initialisation and
* change fetch to use get_weave()
then no write attempts will be made, and instead it will fail with
NoSuchFile
Rob
--
GPG key available at: <http://www.robertcollins.net/keys.txt>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060403/5c9e1fb0/attachment.pgp
More information about the bazaar
mailing list