Rev 14: Generate better branch names for more than 1 level deep sharing. in http://people.ubuntu.com/~robertc/baz2.0/plugins/avahi/trunk
Robert Collins
robertc at robertcollins.net
Mon Jul 9 07:14:10 BST 2007
At http://people.ubuntu.com/~robertc/baz2.0/plugins/avahi/trunk
------------------------------------------------------------
revno: 14
revision-id: robertc at robertcollins.net-20070709061409-vq3w8qo2lh4tahl5
parent: robertc at robertcollins.net-20070709060104-n4lx2kn4wakin63f
committer: Robert Collins <robertc at robertcollins.net>
branch nick: trunk
timestamp: Mon 2007-07-09 16:14:09 +1000
message:
Generate better branch names for more than 1 level deep sharing.
modified:
share.py share.py-20070323082617-ua0xkev3o590n4rm-1
=== modified file 'share.py'
--- a/share.py 2007-07-06 04:32:38 +0000
+++ b/share.py 2007-07-09 06:14:09 +0000
@@ -39,13 +39,19 @@
if path == '':
path = '/'
self.path = path
- self.nick = branch.nick
+ # when there are multiple nested projects nicknames become a problem
+ self.name = self.path
+ if self.name.startswith('/'):
+ self.name = self.name[1:]
+ # but for the root path we have little choice.
+ if not self.name:
+ self.name = branch.nick
self.root_id = branch.basis_tree().get_root_id()
self.group = None
def __repr__(self):
return 'AdvertisedBranch(%r, %r, %r)' % (
- self.server, self.path, self.nick)
+ self.server, self.path, self.name)
def removeService(self):
if self.group is not None:
@@ -68,7 +74,7 @@
try:
self.group.AddService(
avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0),
- self.nick, '_bzr._tcp', self.server.domain,
+ self.name, '_bzr._tcp', self.server.domain,
self.server.host,
dbus.UInt16(self.server.smart_server.port),
avahi.string_array_to_txt_array(txt))
@@ -77,22 +83,22 @@
if not str(exc).startswith(
'org.freedesktop.Avahi.CollisionError:'):
raise
- self.nick = self.server.avahi_server.GetAlternativeServiceName(
- self.nick)
+ self.name = self.server.avahi_server.GetAlternativeServiceName(
+ self.name)
trace.warning('Service name collision. Changing name to %s'
- % self.nick)
+ % self.name)
else:
break
self.group.Commit()
def stateChanged(self, state, status=None):
if state == avahi.ENTRY_GROUP_ESTABLISHED:
- trace.mutter("Service '%s' established", self.nick)
+ trace.mutter("Service '%s' established", self.name)
elif state == avahi.ENTRY_GROUP_COLLISION:
- self.nick = self.server.avahi_server.GetAlternativeServiceName(
- self.nick)
+ self.name = self.server.avahi_server.GetAlternativeServiceName(
+ self.name)
trace.warning('Service name collision. Changing name to %s'
- % self.nick)
+ % self.name)
self.removeService()
self.addService()
@@ -151,12 +157,19 @@
branch = bdir.open_branch()
except errors.NotBranchError:
branch = None
+ except:
+ print "Error opening branch %r" % trans.abspath(filename)
+ raise
if branch is not None:
trace.mutter("Found branch '%s' (nick %s)"
% (filename, branch.nick))
- self.branches.append(AdvertisedBranch(self,filename,
- branch))
+ try:
+ self.branches.append(AdvertisedBranch(self,filename,
+ branch))
+ except:
+ print "Error advertising branch %r" % trans.abspath(filename)
+ raise
dirs_to_check.extend([urlutils.join(filename, name)
for name in trans.list_dir(filename)
if name != '.bzr'])
More information about the bazaar-commits
mailing list