Mercurial > hg
annotate contrib/phab-clean.py @ 46373:711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
For changesets, it is useful to cache the content as it will almost
always be processed afterwards. For manifests on the other hand, the
content is often not used directly as there is a fast path for deltas.
Explicitly disable the cache in exchangev2's manifest handling for that
reason.
Differential Revision: https://phab.mercurial-scm.org/D9847
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Wed, 20 Jan 2021 14:47:13 +0100 |
parents | c102b704edb5 |
children | 6000f5b25c9b |
rev | line source |
---|---|
45830
c102b704edb5
global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44217
diff
changeset
|
1 #!/usr/bin/env python3 |
44217
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
2 # |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
3 # A small script to automatically reject idle Diffs |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
4 # |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
5 # you need to set the PHABBOT_USER and PHABBOT_TOKEN environment variable for authentication |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
6 from __future__ import absolute_import, print_function |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
7 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
8 import datetime |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
9 import os |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
10 import sys |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
11 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
12 import phabricator |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
13 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
14 MESSAGE = """There seems to have been no activities on this Diff for the past 3 Months. |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
15 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
16 By policy, we are automatically moving it out of the `need-review` state. |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
17 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
18 Please, move it back to `need-review` without hesitation if this diff should still be discussed. |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
19 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
20 :baymax:need-review-idle: |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
21 """ |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
22 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
23 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
24 PHAB_URL = "https://phab.mercurial-scm.org/api/" |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
25 USER = os.environ.get("PHABBOT_USER", "baymax") |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
26 TOKEN = os.environ.get("PHABBOT_TOKEN") |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
27 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
28 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
29 NOW = datetime.datetime.now() |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
30 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
31 # 3 months in seconds |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
32 DELAY = 60 * 60 * 24 * 30 * 3 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
33 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
34 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
35 def get_all_diff(phab): |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
36 """Fetch all the diff that the need review""" |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
37 return phab.differential.query( |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
38 status="status-needs-review", |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
39 order="order-modified", |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
40 paths=[('HG', None)], |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
41 ) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
42 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
43 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
44 def filter_diffs(diffs, older_than): |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
45 """filter diffs to only keep the one unmodified sin <older_than> seconds""" |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
46 olds = [] |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
47 for d in diffs: |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
48 modified = int(d['dateModified']) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
49 modified = datetime.datetime.fromtimestamp(modified) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
50 d["idleFor"] = idle_for = NOW - modified |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
51 if idle_for.total_seconds() > older_than: |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
52 olds.append(d) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
53 return olds |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
54 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
55 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
56 def nudge_diff(phab, diff): |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
57 """Comment on the idle diff and reject it""" |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
58 diff_id = int(d['id']) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
59 phab.differential.createcomment( |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
60 revision_id=diff_id, message=MESSAGE, action="reject" |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
61 ) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
62 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
63 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
64 if not USER: |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
65 print( |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
66 "not user specified please set PHABBOT_USER and PHABBOT_TOKEN", |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
67 file=sys.stderr, |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
68 ) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
69 elif not TOKEN: |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
70 print( |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
71 "not api-token specified please set PHABBOT_USER and PHABBOT_TOKEN", |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
72 file=sys.stderr, |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
73 ) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
74 sys.exit(1) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
75 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
76 phab = phabricator.Phabricator(USER, host=PHAB_URL, token=TOKEN) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
77 phab.connect() |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
78 phab.update_interfaces() |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
79 print('Hello "%s".' % phab.user.whoami()['realName']) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
80 |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
81 diffs = get_all_diff(phab) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
82 print("Found %d Diffs" % len(diffs)) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
83 olds = filter_diffs(diffs, DELAY) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
84 print("Found %d old Diffs" % len(olds)) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
85 for d in olds: |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
86 diff_id = d['id'] |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
87 status = d['statusName'] |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
88 modified = int(d['dateModified']) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
89 idle_for = d["idleFor"] |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
90 msg = 'nudging D%s in "%s" state for %s' |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
91 print(msg % (diff_id, status, idle_for)) |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
92 # uncomment to actually affect phab |
064eb65d040f
contrib: a small script to nudge lingering diff
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
93 nudge_diff(phab, d) |