Show More
@@ -2528,6 +2528,7 b' class overlayworkingctx(committablectx):' | |||||
2528 | return path in self._cache |
|
2528 | return path in self._cache | |
2529 |
|
2529 | |||
2530 | def clean(self): |
|
2530 | def clean(self): | |
|
2531 | self._mergestate = None | |||
2531 | self._cache = {} |
|
2532 | self._cache = {} | |
2532 |
|
2533 | |||
2533 | def _compact(self): |
|
2534 | def _compact(self): | |
@@ -2592,6 +2593,11 b' class overlayworkingctx(committablectx):' | |||||
2592 | self._repo, path, parent=self, filelog=filelog |
|
2593 | self._repo, path, parent=self, filelog=filelog | |
2593 | ) |
|
2594 | ) | |
2594 |
|
2595 | |||
|
2596 | def mergestate(self, clean=False): | |||
|
2597 | if clean or self._mergestate is None: | |||
|
2598 | self._mergestate = mergestatemod.memmergestate(self._repo) | |||
|
2599 | return self._mergestate | |||
|
2600 | ||||
2595 |
|
2601 | |||
2596 | class overlayworkingfilectx(committablefilectx): |
|
2602 | class overlayworkingfilectx(committablefilectx): | |
2597 | """Wrap a ``workingfilectx`` but intercepts all writes into an in-memory |
|
2603 | """Wrap a ``workingfilectx`` but intercepts all writes into an in-memory |
@@ -1398,7 +1398,7 b' def applyupdates(' | |||||
1398 | _prefetchfiles(repo, mctx, mresult) |
|
1398 | _prefetchfiles(repo, mctx, mresult) | |
1399 |
|
1399 | |||
1400 | updated, merged, removed = 0, 0, 0 |
|
1400 | updated, merged, removed = 0, 0, 0 | |
1401 |
ms = |
|
1401 | ms = wctx.mergestate(clean=True) | |
1402 | ms.start(wctx.p1().node(), mctx.node(), labels) |
|
1402 | ms.start(wctx.p1().node(), mctx.node(), labels) | |
1403 |
|
1403 | |||
1404 | for f, op in pycompat.iteritems(mresult.commitinfo): |
|
1404 | for f, op in pycompat.iteritems(mresult.commitinfo): | |
@@ -1611,10 +1611,6 b' def applyupdates(' | |||||
1611 | usemergedriver = not overwrite and mergeactions and ms.mergedriver |
|
1611 | usemergedriver = not overwrite and mergeactions and ms.mergedriver | |
1612 |
|
1612 | |||
1613 | if usemergedriver: |
|
1613 | if usemergedriver: | |
1614 | if wctx.isinmemory(): |
|
|||
1615 | raise error.InMemoryMergeConflictsError( |
|
|||
1616 | b"in-memory merge does not support mergedriver" |
|
|||
1617 | ) |
|
|||
1618 | ms.commit() |
|
1614 | ms.commit() | |
1619 | proceed = driverpreprocess(repo, ms, wctx, labels=labels) |
|
1615 | proceed = driverpreprocess(repo, ms, wctx, labels=labels) | |
1620 | # the driver might leave some files unresolved |
|
1616 | # the driver might leave some files unresolved | |
@@ -1895,7 +1891,7 b' def update(' | |||||
1895 | if not overwrite: |
|
1891 | if not overwrite: | |
1896 | if len(pl) > 1: |
|
1892 | if len(pl) > 1: | |
1897 | raise error.Abort(_(b"outstanding uncommitted merge")) |
|
1893 | raise error.Abort(_(b"outstanding uncommitted merge")) | |
1898 |
ms = |
|
1894 | ms = wc.mergestate() | |
1899 | if list(ms.unresolved()): |
|
1895 | if list(ms.unresolved()): | |
1900 | raise error.Abort( |
|
1896 | raise error.Abort( | |
1901 | _(b"outstanding merge conflicts"), |
|
1897 | _(b"outstanding merge conflicts"), |
@@ -801,6 +801,32 b' class mergestate(_mergestate_base):' | |||||
801 | shutil.rmtree(self._repo.vfs.join(b'merge'), True) |
|
801 | shutil.rmtree(self._repo.vfs.join(b'merge'), True) | |
802 |
|
802 | |||
803 |
|
803 | |||
|
804 | class memmergestate(_mergestate_base): | |||
|
805 | def __init__(self, repo): | |||
|
806 | super(memmergestate, self).__init__(repo) | |||
|
807 | self._backups = {} | |||
|
808 | ||||
|
809 | def _make_backup(self, fctx, localkey): | |||
|
810 | self._backups[localkey] = fctx.data() | |||
|
811 | ||||
|
812 | def _restore_backup(self, fctx, localkey, flags): | |||
|
813 | fctx.write(self._backups[localkey], flags) | |||
|
814 | ||||
|
815 | @util.propertycache | |||
|
816 | def mergedriver(self): | |||
|
817 | configmergedriver = self._repo.ui.config( | |||
|
818 | b'experimental', b'mergedriver' | |||
|
819 | ) | |||
|
820 | if configmergedriver: | |||
|
821 | raise error.InMemoryMergeConflictsError( | |||
|
822 | b"in-memory merge does not support mergedriver" | |||
|
823 | ) | |||
|
824 | return None | |||
|
825 | ||||
|
826 | def commit(self): | |||
|
827 | pass | |||
|
828 | ||||
|
829 | ||||
804 | def recordupdates(repo, actions, branchmerge, getfiledata): |
|
830 | def recordupdates(repo, actions, branchmerge, getfiledata): | |
805 | """record merge actions to the dirstate""" |
|
831 | """record merge actions to the dirstate""" | |
806 | # remove (must come first) |
|
832 | # remove (must come first) |
General Comments 0
You need to be logged in to leave comments.
Login now