Comments
Patch
@@ -26,6 +26,7 @@
import errno
import itertools
import stat
+import struct
from .i18n import _
from . import (
@@ -56,6 +57,8 @@
stringutil,
)
+_pack = struct.pack
+
backupdir = 'shelve-backup'
shelvedir = 'shelved'
shelvefileextensions = ['hg', 'patch', 'shelve']
@@ -66,6 +69,12 @@
# generic user for all shelve operations
shelveuser = 'shelve@localhost'
+# Merge state record types. See ``mergestate`` docs for more.
+RECORD_LOCAL = b'L'
+RECORD_OTHER = b'O'
+RECORD_MERGED = b'F'
+RECORD_OVERRIDE = b't'
+
class shelvedfile(object):
"""Helper for the file storing a single shelve
@@ -413,6 +422,22 @@
cmdutil.exportfile(repo, [node], fp, opts=mdiff.diffopts(git=True),
match=match)
+def _storeunresolvedmerge(ui, repo, name=None, extra=None):
+ """Store the mergestate information in changeset extra
+ for later restoration.
+ """
+ ms = merge.mergestate.read(repo)
+ records = ms._readrecords()
+ allowlist = (RECORD_LOCAL, RECORD_OTHER, RECORD_MERGED)
+ mergedata = ''
+ for key, data in records:
+ assert len(key) == 1
+ if key not in allowlist:
+ key, data = RECORD_OVERRIDE, '%s%s' % (key, data)
+ format = r'>sI%is' % len(data)
+ mergedata = mergedata + _pack(format, key, len(data), data)
+ extra['mergerecords'] = mergedata
+
def _includeunknownfiles(repo, pats, opts, extra):
s = repo.status(match=scmutil.match(repo[None], pats, opts),
unknown=True)