Show More
@@ -70,6 +70,7 b' comment associated with each format for ' | |||
|
70 | 70 | from __future__ import absolute_import |
|
71 | 71 | |
|
72 | 72 | import errno |
|
73 | import hashlib | |
|
73 | 74 | import struct |
|
74 | 75 | |
|
75 | 76 | from .i18n import _ |
@@ -954,6 +955,15 b' def _computecontentdivergentset(repo):' | |||
|
954 | 955 | toprocess.update(obsstore.predecessors.get(prec, ())) |
|
955 | 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 | 968 | def createmarkers(repo, relations, flag=0, date=None, metadata=None, |
|
959 | 969 | operation=None): |
@@ -1000,11 +1010,19 b' def createmarkers(repo, relations, flag=' | |||
|
1000 | 1010 | if len(predecessors) > 1 and len(rel[1]) != 1: |
|
1001 | 1011 | msg = 'Fold markers can only have 1 successors, not %d' |
|
1002 | 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 | 1018 | sucs = rel[1] |
|
1005 | 1019 | localmetadata = metadata.copy() |
|
1006 | 1020 | if len(rel) > 2: |
|
1007 | 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 | 1027 | if not prec.mutable(): |
|
1010 | 1028 | raise error.Abort(_("cannot obsolete public changeset: %s") |
@@ -356,9 +356,9 b' collapse rebase' | |||
|
356 | 356 | $ hg id --debug -r tip |
|
357 | 357 | 4dc2197e807bae9817f09905b50ab288be2dbbcf tip |
|
358 | 358 | $ hg debugobsolete |
|
359 | 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 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', 'operation': 'rebase', 'user': 'test'} | |
|
361 | 32af7686d403cf45b5d95f2d70cebea587ac806a 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', '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', 'fold-id': '6fb65cdc', 'fold-idx': '3', 'fold-size': '3', 'operation': 'rebase', 'user': 'test'} | |
|
362 | 362 | |
|
363 | 363 | $ cd .. |
|
364 | 364 |
General Comments 0
You need to be logged in to leave comments.
Login now