diff -r f05a6e015ecc -r e27f1f04c2cf mercurial/obsutil.py --- a/mercurial/obsutil.py Tue Oct 10 02:25:03 2017 +0530 +++ b/mercurial/obsutil.py Thu Oct 05 17:42:56 2017 +0200 @@ -783,3 +783,44 @@ if meta.get('operation')) return sorted(operations) + +def obsfateprinter(successors, markers, ui): + """ Build a obsfate string for a single successorset using all obsfate + related function defined in obsutil + """ + line = [] + + # Verb + line.append(successorsetverb(successors)) + + # Operations + operations = markersoperations(markers) + if operations: + line.append(" using %s" % ", ".join(operations)) + + # Successors + if successors: + fmtsuccessors = [successors.joinfmt(succ) for succ in successors] + line.append(" as %s" % ", ".join(fmtsuccessors)) + + # Users + users = markersusers(markers) + + if users: + line.append(" by %s" % ", ".join(users)) + + # Date + dates = markersdates(markers) + + min_date = min(dates) + max_date = max(dates) + + if min_date == max_date: + fmtmin_date = util.datestr(min_date, '%Y-%m-%d %H:%M %1%2') + line.append(" (at %s)" % fmtmin_date) + else: + fmtmin_date = util.datestr(min_date, '%Y-%m-%d %H:%M %1%2') + fmtmax_date = util.datestr(max_date, '%Y-%m-%d %H:%M %1%2') + line.append(" (between %s and %s)" % (fmtmin_date, fmtmax_date)) + + return "".join(line)