def test_sync_merge(self): (doc, rev1, rev2) = self.createMerge("org.hotchpotch.dict", {'HPSD': struct.dumps({"a": 1})}, {'HPSD': struct.dumps({ "a": 1, "b": 2 })}, {'HPSD': struct.dumps({ "a": 1, "c": 3 })}) l = self.performSync(doc, 'merge') rev = l.revs()[0] s = Connector().stat(rev) self.assertEqual(len(s.parents()), 2) self.assertTrue(rev1 in s.parents()) self.assertTrue(rev2 in s.parents()) # all revs on all stores? l = Connector().lookup_rev(rev1) self.assertTrue(self.store1 in l) self.assertTrue(self.store2 in l) l = Connector().lookup_rev(rev2) self.assertTrue(self.store1 in l) self.assertTrue(self.store2 in l) # see if merge was ok with Connector().peek(rev) as r: hpsd = struct.loads(r.readAll('HPSD')) self.assertEqual(hpsd, {"a": 1, "b": 2, "c": 3})
def test_sync_merge(self): (doc, rev1, rev2) = self.createMerge("org.hotchpotch.dict", {'HPSD' : struct.dumps({"a":1}) }, {'HPSD' : struct.dumps({"a":1, "b":2}) }, {'HPSD' : struct.dumps({"a":1, "c":3}) }) l = self.performSync(doc, 'merge') rev = l.revs()[0] s = Connector().stat(rev) self.assertEqual(len(s.parents()), 2) self.assertTrue(rev1 in s.parents()) self.assertTrue(rev2 in s.parents()) # all revs on all stores? l = Connector().lookup_rev(rev1) self.assertTrue(self.store1 in l) self.assertTrue(self.store2 in l) l = Connector().lookup_rev(rev2) self.assertTrue(self.store1 in l) self.assertTrue(self.store2 in l) # see if merge was ok with Connector().peek(rev) as r: hpsd = struct.loads(r.readAll('HPSD')) self.assertEqual(hpsd, {"a":1, "b":2, "c":3})
def test_sync_merge_fallback(self): (doc, rev1, rev2) = self.createMerge("public.data", {}, {'FILE' : "left"}, {'FILE' : "right"}) l = self.performSync(doc, 'merge') rev = l.revs()[0] s = Connector().stat(rev) self.assertEqual(len(s.parents()), 2) self.assertTrue(rev1 in s.parents()) self.assertTrue(rev2 in s.parents()) self.assertRevContent(rev, {'FILE' : 'left'})
def test_sync_merge_fallback(self): (doc, rev1, rev2) = self.createMerge("public.data", {}, {'FILE': "left"}, {'FILE': "right"}) l = self.performSync(doc, 'merge') rev = l.revs()[0] s = Connector().stat(rev) self.assertEqual(len(s.parents()), 2) self.assertTrue(rev1 in s.parents()) self.assertTrue(rev2 in s.parents()) self.assertRevContent(rev, {'FILE': 'left'})
def __update(self): if self.__seen: self.__unwatch() self.__available = len(Connector().lookup_rev(self.__rev)) > 0 else: self.__available = False try: stat = Connector().stat(self.__rev) self.__mtime = stat.mtime() self.__seen = True self.__available = True self.__view._addParents(stat.parents()) self.__unwatch() except IOError: self.__watch() return
def __update(self): if self.__seen: self.__unwatch() self.__available = len(Connector().lookup_rev(self.__rev)) > 0 else: self.__available = False try: stat = Connector().stat(self.__rev) self.__mtime = stat.mtime() self.__seen = True self.__available = True self.__view._addParents(stat.parents()) self.__unwatch() except IOError: self.__watch() return
def __init__(self, revs, parent=None): super(HistoryTab, self).__init__(parent) # TODO: implement something nice gitk like... self.__historyList = [] self.__historyRevs = [] heads = revs[:] while len(heads) > 0: newHeads = [] for rev in heads: try: if rev not in self.__historyRevs: stat = Connector().stat(rev) mtime = str(stat.mtime()) comment = "" if 'META' in stat.parts(): try: with Connector().peek(rev) as r: metaData = struct.loads(r.readAll('META')) comment = extractMetaData( metaData, [ "org.hotchpotch.annotation", "comment" ], "") except IOError: pass self.__historyList.append(mtime + " - " + comment) self.__historyRevs.append(rev) newHeads.extend(stat.parents()) except IOError: pass heads = newHeads self.__historyListBox = QtGui.QListWidget() self.__historyListBox.setSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored) self.__historyListBox.insertItems(0, self.__historyList) QtCore.QObject.connect( self.__historyListBox, QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem *)"), self.__open) layout = QtGui.QVBoxLayout() layout.addWidget(self.__historyListBox) self.setLayout(layout)
def __init__(self, revs, parent=None): super(HistoryTab, self).__init__(parent) # TODO: implement something nice gitk like... self.__historyList = [] self.__historyRevs = [] heads = revs[:] while len(heads) > 0: newHeads = [] for rev in heads: try: if rev not in self.__historyRevs: stat = Connector().stat(rev) mtime = str(stat.mtime()) comment = "" if "META" in stat.parts(): try: with Connector().peek(rev) as r: metaData = struct.loads(r.readAll("META")) comment = extractMetaData(metaData, ["org.hotchpotch.annotation", "comment"], "") except IOError: pass self.__historyList.append(mtime + " - " + comment) self.__historyRevs.append(rev) newHeads.extend(stat.parents()) except IOError: pass heads = newHeads self.__historyListBox = QtGui.QListWidget() self.__historyListBox.setSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored) self.__historyListBox.insertItems(0, self.__historyList) QtCore.QObject.connect( self.__historyListBox, QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem *)"), self.__open ) layout = QtGui.QVBoxLayout() layout.addWidget(self.__historyListBox) self.setLayout(layout)