)]}'
{"id":"openstack%2Fptgbot~656445","triplet_id":"openstack%2Fptgbot~master~I3f51acc318ecf31d435768640cef6c46d8ca136c","project":"openstack/ptgbot","branch":"master","topic":"subscriptions","hashtags":[],"change_id":"I3f51acc318ecf31d435768640cef6c46d8ca136c","subject":"Add subscribe command for automatic notifications of topics","status":"MERGED","created":"2019-04-30 06:14:41.000000000","updated":"2019-04-30 21:49:16.000000000","submitted":"2019-04-30 21:49:16.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"656445-1556660956748-99a4d632","meta_rev_id":"87737cfde4c3178048ee7df4e4d64d297b0a093a","_number":656445,"virtual_id_number":656445,"owner":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},{"value":0,"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"value":0,"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},{"value":0,"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},{"value":0,"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},{"value":2,"date":"2019-04-30 21:49:16.000000000","post_submit":true,"permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},{"value":0,"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"recommended":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"all":[{"value":1,"date":"2019-04-30 20:16:50.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},{"value":0,"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"value":2,"date":"2019-04-30 21:44:11.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},{"value":2,"date":"2019-04-30 19:57:14.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},{"value":0,"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},{"value":1,"date":"2019-04-30 19:58:51.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},{"value":0,"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"all":[{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},{"value":0,"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"value":1,"date":"2019-04-30 21:44:11.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},{"value":0,"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},{"value":0,"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},{"value":0,"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-04-30 06:15:05.000000000","updated_by":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"reviewer":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"state":"REVIEWER"},{"updated":"2019-04-30 06:15:13.000000000","updated_by":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"reviewer":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"state":"REVIEWER"},{"updated":"2019-04-30 06:16:03.000000000","updated_by":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"reviewer":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"state":"REVIEWER"},{"updated":"2019-04-30 13:57:51.000000000","updated_by":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"reviewer":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"state":"REVIEWER"},{"updated":"2019-04-30 16:53:33.000000000","updated_by":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"reviewer":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"state":"REVIEWER"},{"updated":"2019-04-30 19:57:14.000000000","updated_by":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"reviewer":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"state":"REVIEWER"},{"updated":"2019-04-30 19:58:51.000000000","updated_by":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"reviewer":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"state":"REVIEWER"},{"updated":"2019-04-30 20:16:50.000000000","updated_by":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"reviewer":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"state":"REVIEWER"},{"updated":"2019-04-30 21:44:11.000000000","updated_by":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"reviewer":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"state":"REVIEWER"},{"updated":"2019-04-30 21:49:16.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"cbe663644125597dcdb23773095a8bf164eeec48","author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"date":"2019-04-30 06:14:41.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"8b7fc1588c81783a0be6475fe45f4fea01a09332","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 06:23:39.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 http://logs.openstack.org/45/656445/1/check/openstack-tox-pep8/8d97afc/ : FAILURE in 3m 58s","accounts_in_message":[],"_revision_number":1},{"id":"11cbea182087d2d3b8242e08fb39ebb6965433aa","author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"date":"2019-04-30 13:55:59.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"13edc5b76b19553efe24c8cb7c229a3817eb44a3","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 14:00:58.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 http://logs.openstack.org/45/656445/2/check/openstack-tox-pep8/70315cf/ : SUCCESS in 4m 05s","accounts_in_message":[],"_revision_number":2},{"id":"e82e4c4a90796b9211c7ec1d7cff15c9279e3d26","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-04-30 14:16:19.000000000","message":"Patch Set 2: Code-Review+1\n\nCool idea!\n\nAre any encoding/decoding issues magically handled by the framework?","accounts_in_message":[],"_revision_number":2},{"id":"0a9394b33d2de17a8061fbb4e0b5fe04ca9bde7a","author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"date":"2019-04-30 16:53:19.000000000","message":"Patch Set 2:\n\nYou mean UTF-8 encoding kind of thing, or something else? If the former, TBH I have no idea but I guess so ;-)","accounts_in_message":[],"_revision_number":2},{"id":"edde87aecc9fbf9d1d4515796aaeb543aa4924e2","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-04-30 16:55:00.000000000","message":"Patch Set 2:\n\nQuotes, angle brackets, that kind of thing. Stuff that has meaning (but different meanings) in python re vs json vs html vs ...\n\nIf you\u0027ve tested this with nontrivial regexes, I\u0027m sure it\u0027s fine :)","accounts_in_message":[],"_revision_number":2},{"id":"343196d20f11e5b6217f295fac187a692f6ae785","author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"date":"2019-04-30 18:07:28.000000000","message":"Patch Set 2:\n\nOh right - well the regexp is just stored as a \"-quoted string in the backend JSON database, so yeah, it\u0027s all taken care of.  I just tested with a regexp containing a single \" quote and as expected it just escaped it and it works fine.","accounts_in_message":[],"_revision_number":2},{"id":"4dc3d5ea9c19fcf798b66fdb32b4dcfb4f55fe94","author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"date":"2019-04-30 18:28:32.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"044e94520847fa7299c07f39bea6c467c8723ea1","author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"date":"2019-04-30 18:29:02.000000000","message":"Patch Set 3:\n\nLatest patch set also includes the room location (if known) in the notification.","accounts_in_message":[],"_revision_number":3},{"id":"1acdca04d2a3fe31d99a8226a3ee0d5ba41a159d","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 18:36:58.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 http://logs.openstack.org/45/656445/3/check/openstack-tox-pep8/5444da4/ : SUCCESS in 3m 34s","accounts_in_message":[],"_revision_number":3},{"id":"2b94d36354fc7fb27329e5cfd0d0ea0bd5a8b1d2","author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"date":"2019-04-30 19:07:05.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"a543198f1b80837c040b3e7f1ca1a8fe7447dc98","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 19:12:03.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-pep8 http://logs.openstack.org/45/656445/4/check/openstack-tox-pep8/07ae4f9/ : SUCCESS in 3m 48s","accounts_in_message":[],"_revision_number":4},{"id":"6deb332b9d14209eaf78ad0c1848e9d01169839d","author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"date":"2019-04-30 19:57:14.000000000","message":"Patch Set 4: Code-Review+2\n\nLooks sane to me, haven\u0027t tested live though","accounts_in_message":[],"_revision_number":4},{"id":"13888b9997c06a9596d6f3c08dbe8339f30aafd3","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-04-30 19:58:51.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"c78b511dbcf22bc7b8643723a7584258c74ea5b8","author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"date":"2019-04-30 20:16:50.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"49bf247b4884aa0d9e96e46cc069e9e906426e38","author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"date":"2019-04-30 21:44:11.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1\n\nRegex\u0027s could potentially be abused (by supplying a very bad regex that is slow), but I think we can worry about that if it gets abused.","accounts_in_message":[],"_revision_number":4},{"id":"3c828f6e5db0bbf0f06fa1f85aa958e897bab41f","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 21:44:31.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"51c0590221c03dcedc76a42e8bd5dee022445262","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 21:49:16.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":4},{"id":"760aecefb1ec656b0a5aaa720251bbca32ba033a","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 21:49:16.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- openstack-tox-pep8 http://logs.openstack.org/45/656445/4/gate/openstack-tox-pep8/7aa176e/ : SUCCESS in 3m 57s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"e8f88b2ee19d2bc7eb712515bacf904f626b67ba","revisions":{"19597173da9877d9879599c859743b20ed71072c":{"kind":"REWORK","_number":1,"created":"2019-04-30 06:14:41.000000000","uploader":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"ref":"refs/changes/45/656445/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ptgbot","ref":"refs/changes/45/656445/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/1"}}},"commit":{"parents":[{"commit":"9cb30c28a9e0faada4325c4239b983d562b6710d","subject":"Merge \"Add presence tracking commands\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/9cb30c28a9e0faada4325c4239b983d562b6710d"}]}],"author":{"name":"Adam Spiers","email":"aspiers@suse.com","date":"2019-04-30 04:50:44.000000000","tz":-360},"committer":{"name":"Adam Spiers","email":"aspiers@suse.com","date":"2019-04-30 06:13:58.000000000","tz":-360},"subject":"Add subscribe command for automatic notifications of topics","message":"Add subscribe command for automatic notifications of topics\n\nAdd a new \u0027subscribe\u0027 command which allows people to subscribe for\nautomatic notifications via direct message of topics which match the\nsubscription regex they provide.  With no regex argument it shows the\nuser\u0027s current subscription (if any).  Also add a new \u0027unsubscribe\u0027\ncommand for clearing the regex.\n\nExample use cases:\n\n1. I know that nova is planning to discuss $TOPIC some time tomorrow\n   but they don\u0027t know exactly when, and I want to spend most of the\n   day in another room whilst ensuring I don\u0027t miss that particular\n   discussion on $TOPIC \u003d\u003e \"/msg ptgbot subscribe $TOPIC\" will give me\n   notifications when the PTL types \"#nova next $TOPIC\" and \"#nova now\n   $TOPIC\".\n\n2. I\u0027m interested in *all* discussion on Python 3.  I don\u0027t know which\n   projects are planning to discuss it, let alone when, but that\n   doesn\u0027t matter, because I can type \"/msg ptgbot subscribe python ?3\"\n   and get notified of all Python 3 discussions.\n\nAs with the presence tracking commands, these commands can be used in\npublic channels by preceding them with a \u0027#\u0027 character.\n\nChange-Id: I3f51acc318ecf31d435768640cef6c46d8ca136c\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/19597173da9877d9879599c859743b20ed71072c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/19597173da9877d9879599c859743b20ed71072c"}]},"branch":"refs/heads/master"},"4a3552348de5a427140355edd5a1951cc8dd13e9":{"kind":"REWORK","_number":2,"created":"2019-04-30 13:55:59.000000000","uploader":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"ref":"refs/changes/45/656445/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ptgbot","ref":"refs/changes/45/656445/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/2"}}},"commit":{"parents":[{"commit":"9cb30c28a9e0faada4325c4239b983d562b6710d","subject":"Merge \"Add presence tracking commands\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/9cb30c28a9e0faada4325c4239b983d562b6710d"}]}],"author":{"name":"Adam Spiers","email":"aspiers@suse.com","date":"2019-04-30 04:50:44.000000000","tz":-360},"committer":{"name":"Adam Spiers","email":"aspiers@suse.com","date":"2019-04-30 13:55:44.000000000","tz":-360},"subject":"Add subscribe command for automatic notifications of topics","message":"Add subscribe command for automatic notifications of topics\n\nAdd a new \u0027subscribe\u0027 command which allows people to subscribe for\nautomatic notifications via direct message of topics which match the\nsubscription regex they provide.  With no regex argument it shows the\nuser\u0027s current subscription (if any).  Also add a new \u0027unsubscribe\u0027\ncommand for clearing the regex.\n\nExample use cases:\n\n1. I know that nova is planning to discuss $TOPIC some time tomorrow\n   but they don\u0027t know exactly when, and I want to spend most of the\n   day in another room whilst ensuring I don\u0027t miss that particular\n   discussion on $TOPIC \u003d\u003e \"/msg ptgbot subscribe $TOPIC\" will give me\n   notifications when the PTL types \"#nova next $TOPIC\" and \"#nova now\n   $TOPIC\".\n\n2. I\u0027m interested in *all* discussion on Python 3.  I don\u0027t know which\n   projects are planning to discuss it, let alone when, but that\n   doesn\u0027t matter, because I can type \"/msg ptgbot subscribe python ?3\"\n   and get notified of all Python 3 discussions.\n\nAs with the presence tracking commands, these commands can be used in\npublic channels by preceding them with a \u0027#\u0027 character.\n\nChange-Id: I3f51acc318ecf31d435768640cef6c46d8ca136c\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/4a3552348de5a427140355edd5a1951cc8dd13e9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/4a3552348de5a427140355edd5a1951cc8dd13e9"}]},"branch":"refs/heads/master"},"dc7bdc51ee01b435bb7b309833b862685ec58c63":{"kind":"REWORK","_number":3,"created":"2019-04-30 18:28:32.000000000","uploader":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"ref":"refs/changes/45/656445/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ptgbot","ref":"refs/changes/45/656445/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/3"}}},"commit":{"parents":[{"commit":"9cb30c28a9e0faada4325c4239b983d562b6710d","subject":"Merge \"Add presence tracking commands\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/9cb30c28a9e0faada4325c4239b983d562b6710d"}]}],"author":{"name":"Adam Spiers","email":"aspiers@suse.com","date":"2019-04-30 04:50:44.000000000","tz":-360},"committer":{"name":"Adam Spiers","email":"aspiers@suse.com","date":"2019-04-30 18:27:13.000000000","tz":-360},"subject":"Add subscribe command for automatic notifications of topics","message":"Add subscribe command for automatic notifications of topics\n\nAdd a new \u0027subscribe\u0027 command which allows people to subscribe for\nautomatic notifications via direct message of topics which match the\nsubscription regex they provide.  With no regex argument it shows the\nuser\u0027s current subscription (if any).  Also add a new \u0027unsubscribe\u0027\ncommand for clearing the regex.\n\nExample use cases:\n\n1. I know that nova is planning to discuss $TOPIC some time tomorrow\n   but they don\u0027t know exactly when, and I want to spend most of the\n   day in another room whilst ensuring I don\u0027t miss that particular\n   discussion on $TOPIC \u003d\u003e \"/msg ptgbot subscribe $TOPIC\" will give me\n   notifications when the PTL types \"#nova next $TOPIC\" and \"#nova now\n   $TOPIC\".\n\n2. I\u0027m interested in *all* discussion on Python 3.  I don\u0027t know which\n   projects are planning to discuss it, let alone when, but that\n   doesn\u0027t matter, because I can type \"/msg ptgbot subscribe python ?3\"\n   and get notified of all Python 3 discussions.\n\nAs with the presence tracking commands, these commands can be used in\npublic channels by preceding them with a \u0027#\u0027 character.\n\nChange-Id: I3f51acc318ecf31d435768640cef6c46d8ca136c\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/dc7bdc51ee01b435bb7b309833b862685ec58c63"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/dc7bdc51ee01b435bb7b309833b862685ec58c63"}]},"branch":"refs/heads/master"},"e8f88b2ee19d2bc7eb712515bacf904f626b67ba":{"kind":"REWORK","_number":4,"created":"2019-04-30 19:07:05.000000000","uploader":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"ref":"refs/changes/45/656445/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ptgbot","ref":"refs/changes/45/656445/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ptgbot refs/changes/45/656445/4"}}},"commit":{"parents":[{"commit":"9cb30c28a9e0faada4325c4239b983d562b6710d","subject":"Merge \"Add presence tracking commands\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/9cb30c28a9e0faada4325c4239b983d562b6710d"}]}],"author":{"name":"Adam Spiers","email":"aspiers@suse.com","date":"2019-04-30 04:50:44.000000000","tz":-360},"committer":{"name":"Adam Spiers","email":"aspiers@suse.com","date":"2019-04-30 19:06:58.000000000","tz":-360},"subject":"Add subscribe command for automatic notifications of topics","message":"Add subscribe command for automatic notifications of topics\n\nAdd a new \u0027subscribe\u0027 command which allows people to subscribe for\nautomatic notifications via direct message of topics which match the\nsubscription regex they provide.  With no regex argument it shows the\nuser\u0027s current subscription (if any).  Also add a new \u0027unsubscribe\u0027\ncommand for clearing the regex.\n\nExample use cases:\n\n1. I know that nova is planning to discuss $TOPIC some time tomorrow\n   but they don\u0027t know exactly when, and I want to spend most of the\n   day in another room whilst ensuring I don\u0027t miss that particular\n   discussion on $TOPIC \u003d\u003e \"/msg ptgbot subscribe $TOPIC\" will give me\n   notifications when the PTL types \"#nova next $TOPIC\" and \"#nova now\n   $TOPIC\".\n\n2. I\u0027m interested in *all* discussion on Python 3.  I don\u0027t know which\n   projects are planning to discuss it, let alone when, but that\n   doesn\u0027t matter, because I can type \"/msg ptgbot subscribe python ?3\"\n   and get notified of all Python 3 discussions.\n\nAs with the presence tracking commands, these commands can be used in\npublic channels by preceding them with a \u0027#\u0027 character.\n\nChange-Id: I3f51acc318ecf31d435768640cef6c46d8ca136c\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/e8f88b2ee19d2bc7eb712515bacf904f626b67ba"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ptgbot/commit/e8f88b2ee19d2bc7eb712515bacf904f626b67ba"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
