Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.1, 2.1.1, and 2.1.2

reporegistry: Update subrepos when a repo is changed

Whenever the repowidget.repositoryChanged() function is executed, the list of
subrepos inside any top level repo or subrepo in the reporegistry that may be
contained in the updated repository will be updated.

Changeset fc40752a5a78

Parent 29f088531f12

by Angel Ezquerra

Changes to 5 files · Browse files at fc40752a5a78 Showing diff from parent 29f088531f12 Diff from another changeset...

 
401
402
403
 
 
 
 
 
 
 
 
 
 
 
 
 
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
@@ -401,3 +401,15 @@
  it = self.tview.model().getRepoItem(hglib.fromunicode(uroot))   if it:   it.setBaseNode(basenode) + + @pyqtSlot(QString) + def repoChanged(self, uroot): + m = self.tview.model() + changedrootpath = hglib.fromunicode(uroot).replace("\\", "/") + def isAboveOrBelowUroot(testedpath): + """Return True if rootpath is contained or contains uroot""" + r1 = testedpath.replace("\\", "/") + "/" + r2 = changedrootpath + "/" + return r1.startswith(r2) or r2.startswith(r1) + + m.loadSubrepos(m.rootItem, isAboveOrBelowUroot)
 
197
198
199
200
201
202
203
204
205
 
252
253
254
255
 
256
257
258
 
328
329
330
331
 
332
333
334
 
197
198
199
 
 
 
200
201
202
 
249
250
251
 
252
253
254
255
 
325
326
327
 
328
329
330
331
@@ -197,9 +197,6 @@
  def flags(self):   return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDragEnabled   - def removeRows(self, row, count): - return False -   def dump(self, xw):   xw.writeAttribute('root', hglib.tounicode(self._root))   xw.writeAttribute('shortname', self.shortname()) @@ -252,7 +249,7 @@
  if invalidSubrepoList:   self._valid = False   invalidRepoList += invalidSubrepoList - +   except (EnvironmentError, error.RepoError, util.Abort), e:   # Add the repo to the list of repos/subrepos   # that could not be open @@ -328,7 +325,7 @@
  else:   return ['open', 'clone', None, 'explore', 'terminal',   None, 'settings'] - +    class RepoGroupItem(RepoTreeItem):   def __init__(self, name=None, parent=None):
 
290
291
292
293
294
 
295
296
297
298
299
 
 
 
 
 
 
 
290
291
292
 
 
293
294
 
 
 
 
295
296
297
298
299
300
@@ -290,10 +290,11 @@
  return count   count += 1   - def loadSubrepos(self, root): - warningmsg = '' + def loadSubrepos(self, root, filterFunc=(lambda r: True)):   for c in getRepoItemList(root): - if self.showNetworkSubrepos \ - or not paths.netdrive_status(c.rootpath()): - - invalidRepoList = c.appendSubrepos() + if filterFunc(c.rootpath()): + if self.showNetworkSubrepos \ + or not paths.netdrive_status(c.rootpath()): + self.removeRows(0, c.childCount(), + self.createIndex(c.row(), 0, c)) + c.appendSubrepos()
 
45
46
47
 
 
48
49
50
 
828
829
830
 
 
 
831
832
833
 
45
46
47
48
49
50
51
52
 
830
831
832
833
834
835
836
837
838
@@ -45,6 +45,8 @@
  progress = pyqtSignal(QString, object, QString, QString, object)   makeLogVisible = pyqtSignal(bool)   + repoChanged = pyqtSignal(QString) +   revisionSelected = pyqtSignal(object)     titleChanged = pyqtSignal(unicode) @@ -828,6 +830,9 @@
  else:   self.dirty = True   + # Update the repo registry entries related to the current repo + self.repoChanged.emit(hglib.tounicode(self.repo.root)) +   def configChanged(self):   'Repository is reporting its config files have changed'   self.repomodel.invalidate()
 
620
621
622
 
623
624
625
 
620
621
622
623
624
625
626
@@ -620,6 +620,7 @@
  rw.toolbarVisibilityChanged.connect(self.updateToolBarActions)   rw.shortNameChanged.connect(self.reporegistry.shortNameChanged)   rw.baseNodeChanged.connect(self.reporegistry.baseNodeChanged) + rw.repoChanged.connect(self.reporegistry.repoChanged)     tw = self.repoTabsWidget   index = self.repoTabsWidget.addTab(rw, rw.title())