Exemple #1
0
    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})
Exemple #2
0
	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})
Exemple #3
0
	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'})
Exemple #4
0
    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
Exemple #7
0
    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)
Exemple #8
0
    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)