Show More
@@ -70,6 +70,7 b' comment associated with each format for ' | |||||
70 | from __future__ import absolute_import |
|
70 | from __future__ import absolute_import | |
71 |
|
71 | |||
72 | import errno |
|
72 | import errno | |
|
73 | import hashlib | |||
73 | import struct |
|
74 | import struct | |
74 |
|
75 | |||
75 | from .i18n import _ |
|
76 | from .i18n import _ | |
@@ -954,6 +955,15 b' def _computecontentdivergentset(repo):' | |||||
954 | toprocess.update(obsstore.predecessors.get(prec, ())) |
|
955 | toprocess.update(obsstore.predecessors.get(prec, ())) | |
955 | return divergent |
|
956 | return divergent | |
956 |
|
957 | |||
|
958 | def makefoldid(relation, user): | |||
|
959 | ||||
|
960 | folddigest = hashlib.sha1(user) | |||
|
961 | for p in relation[0] + relation[1]: | |||
|
962 | folddigest.update('%d' % p.rev()) | |||
|
963 | folddigest.update(p.node()) | |||
|
964 | # Since fold only has to compete against fold for the same successors, it | |||
|
965 | # seems fine to use a small ID. Smaller ID save space. | |||
|
966 | return node.hex(folddigest.digest())[:8] | |||
957 |
|
967 | |||
958 | def createmarkers(repo, relations, flag=0, date=None, metadata=None, |
|
968 | def createmarkers(repo, relations, flag=0, date=None, metadata=None, | |
959 | operation=None): |
|
969 | operation=None): | |
@@ -1000,11 +1010,19 b' def createmarkers(repo, relations, flag=' | |||||
1000 | if len(predecessors) > 1 and len(rel[1]) != 1: |
|
1010 | if len(predecessors) > 1 and len(rel[1]) != 1: | |
1001 | msg = 'Fold markers can only have 1 successors, not %d' |
|
1011 | msg = 'Fold markers can only have 1 successors, not %d' | |
1002 | raise error.ProgrammingError(msg % len(rel[1])) |
|
1012 | raise error.ProgrammingError(msg % len(rel[1])) | |
1003 | for prec in predecessors: |
|
1013 | foldid = None | |
|
1014 | foldsize = len(predecessors) | |||
|
1015 | if 1 < foldsize: | |||
|
1016 | foldid = makefoldid(rel, metadata['user']) | |||
|
1017 | for foldidx, prec in enumerate(predecessors, 1): | |||
1004 | sucs = rel[1] |
|
1018 | sucs = rel[1] | |
1005 | localmetadata = metadata.copy() |
|
1019 | localmetadata = metadata.copy() | |
1006 | if len(rel) > 2: |
|
1020 | if len(rel) > 2: | |
1007 | localmetadata.update(rel[2]) |
|
1021 | localmetadata.update(rel[2]) | |
|
1022 | if foldid is not None: | |||
|
1023 | localmetadata['fold-id'] = foldid | |||
|
1024 | localmetadata['fold-idx'] = '%d' % foldidx | |||
|
1025 | localmetadata['fold-size'] = '%d' % foldsize | |||
1008 |
|
1026 | |||
1009 | if not prec.mutable(): |
|
1027 | if not prec.mutable(): | |
1010 | raise error.Abort(_("cannot obsolete public changeset: %s") |
|
1028 | raise error.Abort(_("cannot obsolete public changeset: %s") |
@@ -356,9 +356,9 b' collapse rebase' | |||||
356 | $ hg id --debug -r tip |
|
356 | $ hg id --debug -r tip | |
357 | 4dc2197e807bae9817f09905b50ab288be2dbbcf tip |
|
357 | 4dc2197e807bae9817f09905b50ab288be2dbbcf tip | |
358 | $ hg debugobsolete |
|
358 | $ hg debugobsolete | |
359 | 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'rebase', 'user': 'test'} |
|
359 | 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'fold-id': '6fb65cdc', 'fold-idx': '1', 'fold-size': '3', 'operation': 'rebase', 'user': 'test'} | |
360 | 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'rebase', 'user': 'test'} |
|
360 | 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'fold-id': '6fb65cdc', 'fold-idx': '2', 'fold-size': '3', 'operation': 'rebase', 'user': 'test'} | |
361 | 32af7686d403cf45b5d95f2d70cebea587ac806a 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'rebase', 'user': 'test'} |
|
361 | 32af7686d403cf45b5d95f2d70cebea587ac806a 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'fold-id': '6fb65cdc', 'fold-idx': '3', 'fold-size': '3', 'operation': 'rebase', 'user': 'test'} | |
362 |
|
362 | |||
363 | $ cd .. |
|
363 | $ cd .. | |
364 |
|
364 |
General Comments 0
You need to be logged in to leave comments.
Login now