storage branch - remaining issues?

Martin Pool mbp at sourcefrog.net
Thu Jan 19 01:43:53 GMT 2006


On 18 Jan 2006, John Arbash Meinel <john at arbash-meinel.com> wrote:
> Robert Collins wrote:
> > the following things in the diff look like things we should address
> > before merging:
> > 
> > +        elif mode == 'r':
> > +            # XXX: Do we really want errors='replace'?   Perhaps it
> > should be
> > +            # an error, or at least reported, if there's
> > incorrectly-encoded
> > +            # data inside a file.
> > +            # <https://launchpad.net/products/bzr/+bug/3823>
> > +            return
> > codecs.getreader('utf-8')(self._transport.get(relpath),
> > errors='replace')
> > 
> > There were a couple of warts left, that I have fixed up: the repository
> > was not taking out any read or write locks on most of its methods, and
> > LockableFiles did not take a write lock out for put[_utf8].
> > 
> > Other than that, I think this is good to go. I'm pushing my tweaks now.
> > 
> > Rob
> 
> I would like to see us get rid of errors='replace'. It just covers up
> bugs, which should be fixed elsewhere.

I agree it should be avoided, but there might be some specific
exceptions such as displaying log or patch output to a terminal.

> Also, rather than using controlfile() I really think we should use get()
> and get_utf8(), to be consistent with put() and put_utf8().

I agree.

> I don't mind switching to the lftp spec so that we have:
> sftp://user:pass@host:port/~/relative/path
> and
> sftp://user:pass@host:port/absolute/path
> 
> But I would like to keep:
> sftp://user:pass@host:port//absolute/path
> 
> I know that I've started using it, and it would be really nice if I
> didn't have every branch complaining on me all the time.

OK, good.  Perhaps that syntax should just be accepted as the absolute
path "//absolute/path".  (It might do something different on unix
systems that have UNC-like //host/path escapes, but making that
accessible is probably good.)

> It seems that 'find_branch' has been deprecated long enough (especially
> since it raises a full exception). It should just be removed.
> 
> needs_read_lock and needs_write_lock should get the same treatment that
> the 'deprecated' code has (where we set func.__name__, etc)

That's done in my storage branch after your previous review but  I had
neglected to push it up.  It's now at 

  http://people.ubuntu.com/~mbp/bzr.mbp.storage/

> Ultimately, we should not be doing: 't = get_transport(unicode(base))',
> but I think that can wait for my encoding branch, since part of my work
> is to make sure that transports really do require and return urls. Which
> they will then internally translate into unicode as needed.
> 
> We have the same bug in:
> +    def peek_lock_mode(self):
> +        """Return lock mode for the Branch: 'r', 'w' or None"""
> +        raise NotImplementedError(self.is_locked)
> +
> 
> This needs to raise NotImplementedError(self.peek_lock_mode).

Also fixed in my branch.

-- 
Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060119/4296c8b2/attachment.pgp 


More information about the bazaar mailing list