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