# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1506289986 -19800 # Node ID 725b660d988676ab344a35d7d992d3932ce37bf3 # Parent db3c85c2cb473f394a39248ddd48914161b6e204 topics: show the user who last touched the topic in --age This patch adds support for showing the user who last touched the topic in the age option to `hg topics`. diff -r db3c85c2cb47 -r 725b660d9886 hgext3rd/topic/__init__.py --- a/hgext3rd/topic/__init__.py Mon Sep 25 03:06:37 2017 +0530 +++ b/hgext3rd/topic/__init__.py Mon Sep 25 03:23:06 2017 +0530 @@ -405,7 +405,8 @@ hg topics - List of topics with their last touched time sorted according to it:: + List of topics sorted according to their last touched time displaying last + touched time and the user who last touched the topic:: hg topic --age @@ -789,7 +790,7 @@ activetopic = repo.currenttopic for timevalue in times: curtopics = sorted(timedict[timevalue][1]) - for topic in curtopics: + for topic, user in curtopics: fm.startitem() marker = ' ' label = 'topic' @@ -806,6 +807,8 @@ else: timestr = templatefilters.age(timedict[timevalue][0]) fm.write('lasttouched', '%s', timestr, label='topic.list.time') + if user: + fm.write('usertouched', ' by %s', user, label='topic.list.user') fm.plain(')') fm.plain('\n') fm.end() @@ -819,6 +822,7 @@ curtime = time.time() for t in topics: secspassed = -1 + user = None maxtime = (0, 0) trevs = repo.revs("topic(%s)", t) # Need to check for the time of all changesets in the topic, whether @@ -826,23 +830,38 @@ # XXX: can we just rely on the max rev number for this for revs in trevs: rt = repo[revs].date() - if rt[0] > maxtime[0]: + if rt[0] >= maxtime[0]: # Can store the rev to gather more info # latesthead = revs maxtime = rt + user = repo[revs].user() # looking on the markers also to get more information and accurate # last touch time. obsmarkers = compat.getmarkers(repo, [repo[revs].node()]) for marker in obsmarkers: rt = marker.date() if rt[0] > maxtime[0]: + user = marker.metadata().get('user', user) maxtime = rt + + # Making the username more better + username = None + if user: + # user is of form "abc " + username = user.split('<')[0] + if not username: + # user is of form "" + username = user[1:-1] + username = username.strip() + + topicuser = (t, username) + if trevs: secspassed = (curtime - maxtime[0]) try: - topicstime[secspassed][1].append(t) + topicstime[secspassed][1].append(topicuser) except KeyError: - topicstime[secspassed] = (maxtime, [t]) + topicstime[secspassed] = (maxtime, [topicuser]) return topicstime diff -r db3c85c2cb47 -r 725b660d9886 tests/test-topic.t --- a/tests/test-topic.t Mon Sep 25 03:06:37 2017 +0530 +++ b/tests/test-topic.t Mon Sep 25 03:23:06 2017 +0530 @@ -38,7 +38,8 @@ hg topics - List of topics with their last touched time sorted according to it: + List of topics sorted according to their last touched time displaying last + touched time and the user who last touched the topic: hg topic --age @@ -904,7 +905,7 @@ t0^ Add file delta (base) $ hg topics --age - * changewut (1970-01-01) + * changewut (1970-01-01 by test) $ cd .. @@ -951,24 +952,24 @@ $ hg add b $ hg topic topic1990 - $ hg ci -m "Added b" --config devel.default-date="631152000 0" + $ hg ci -m "Added b" --config devel.default-date="631152000 0" --user "foo" active topic 'topic1990' grew its first changeset $ hg add c $ hg topic topic2010 - $ hg ci -m "Added c" --config devel.default-date="1262304000 0" + $ hg ci -m "Added c" --config devel.default-date="1262304000 0" --user "bar" active topic 'topic2010' grew its first changeset $ hg log -G - @ changeset: 3:9048b194797d + @ changeset: 3:76b16af75125 | tag: tip | topic: topic2010 - | user: test + | user: bar | date: Fri Jan 01 00:00:00 2010 +0000 | summary: Added c | - o changeset: 2:186d493c7f8d + o changeset: 2:bba5bde53608 | topic: topic1990 - | user: test + | user: foo | date: Mon Jan 01 00:00:00 1990 +0000 | summary: Added b | @@ -985,17 +986,17 @@ * topic2010 $ hg topics --age - * topic2010 (2010-01-01) - topic1990 (1990-01-01) - topic1970 (1970-01-01) + * topic2010 (2010-01-01 by bar) + topic1990 (1990-01-01 by foo) + topic1970 (1970-01-01 by test) $ hg up topic1970 switching to topic topic1970 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ hg topics --age - topic2010 (2010-01-01) - topic1990 (1990-01-01) - * topic1970 (1970-01-01) + topic2010 (2010-01-01 by bar) + topic1990 (1990-01-01 by foo) + * topic1970 (1970-01-01 by test) $ cd ..