navaneeth.suresh created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY We store mergestate records in `.hg/merge`. This patch adds a method of storage in changeset extras. This will help in the exchange of mergestate records to other repos. Also, this can be used by `shelve --unresolved` to store the mergestate records. It uses the storage format supported for hg versions 3.7 or later. For the time being, I have omitted the storage of the content of the local version of unresolved files. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D6736 AFFECTED FILES mercurial/shelve.py CHANGE DETAILS diff --git a/mercurial/shelve.py b/mercurial/shelve.py --- a/mercurial/shelve.py +++ b/mercurial/shelve.py @@ -413,6 +413,36 @@ cmdutil.exportfile(repo, [node], fp, opts=mdiff.diffopts(git=True), match=match) +def _encodemergerecords(records): + """Encode mergestate records to store in changeset extras. + Takes list of tuples as input and returns str. + """ + items = [ + '%s\033%s' % (rtype, record) + for rtype, record in sorted(records) + ] + return "\n".join(items) + +def _decodemergerecords(data): + """Decode mergestate record from changeset extras to return + a list of tuples. + """ + records = [] + for l in data.split('\n'): + rtype, record = l.split('\033') + records.append((rtype, record)) + return records + +def _storeunresolvedmerge(ui, repo, name=None, extra=None): + """Store the mergestate information in changeset extra + + This will clear the mergestate and also stores the mergestate + information for later restoration. + """ + ms = merge.mergestate.read(repo) + extra['mergerecords'] = _encodemergerecords(ms._readrecords()) + ms.reset() + def _includeunknownfiles(repo, pats, opts, extra): s = repo.status(match=scmutil.match(repo[None], pats, opts), unknown=True) To: navaneeth.suresh, #hg-reviewers Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel