X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/7c8d3ac9807cf36af4c16aa26841104914c2033e..768d590f9fffc1bc3693e59de437f720fd257776:/lib/wlrepo/mercurial_backend/document.py diff --git a/lib/wlrepo/mercurial_backend/document.py b/lib/wlrepo/mercurial_backend/document.py index 35779d82..77b8ead7 100755 --- a/lib/wlrepo/mercurial_backend/document.py +++ b/lib/wlrepo/mercurial_backend/document.py @@ -103,7 +103,7 @@ class MercurialDocument(wlrepo.Document): self.invoke_and_commit(take_action, \ lambda d: ("$AUTO$ File checkout.", user) ) - return self._library.document_for_rev(fullid) + return self._library.document_for_revision(fullid) def up_to_date(self): if self.ismain(): @@ -190,18 +190,22 @@ class MercurialDocument(wlrepo.Document): # | * # | | # We want to prevent stuff like this. - if self.parent().parentof(shared): + if self.parent().parentof(shared) and shared.parentof(self): return False, "Preventing zig-zag" - return True, "OK" - + return True, "All ok" def share(self, message): lock = self.library.lock() try: - result, info = self.would_share() + # check if the document is in "updated" state + if not self.up_to_date(): + raise wlrepo.OutdatedException("You must update your document before share.") - if not result: + # now check if there is anything to do + need_work, info = self.would_share() + + if not need_work: return self.shared() # The good situation @@ -215,15 +219,14 @@ class MercurialDocument(wlrepo.Document): # | | shared = self.shared() - if shared.ancestorof(self): + try: success = shared._revision.merge_with(self._revision, user=self.owner, message=message) - if not success: raise wlrepo.LibraryException("Merge failed.") return shared.latest() - - raise wlrepo.LibraryException("Unrecognized share-state.") + except Abort, e: + raise wlrepo.LibraryException( repr(e) ) finally: lock.release()