##// END OF EJS Templates
obsolete: explicitly track folds inside the markers...
Boris Feld -
r40078:208303a8 default
parent child Browse files
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