Mir

Merge lp:~alan-griffiths/mir/tidy-code into lp:mir

Proposed by Alan Griffiths
Status: Merged
Merged at revision: 4097
Proposed branch: lp:~alan-griffiths/mir/tidy-code
Merge into: lp:mir
Prerequisite: lp:~alan-griffiths/mir/tidy_code
Diff against target: 466 lines (+3/-233)
19 files modified
src/client/CMakeLists.txt (+0/-1)
src/client/buffer_stream.cpp (+0/-6)
src/client/buffer_stream.h (+0/-3)
src/client/error_chain.cpp (+0/-63)
src/client/error_chain.h (+0/-51)
src/client/input/input_event.cpp (+0/-7)
src/client/mir_connection.cpp (+0/-1)
src/client/presentation_chain.h (+1/-4)
src/client/symbols.map (+2/-22)
src/include/common/mir/input/android/event_conversion_helpers.h (+0/-60)
src/platforms/android/client/buffer.h (+0/-3)
src/platforms/android/server/platform.h (+0/-1)
src/platforms/evdev/libinput_device.h (+0/-2)
src/platforms/evdev/platform.h (+0/-3)
src/server/input/config_changer.cpp (+0/-1)
src/server/input/default_device.h (+0/-1)
src/server/input/default_input_device_hub.h (+0/-1)
src/server/scene/surface_stack.h (+0/-2)
tests/unit-tests/frontend/stress_protobuf_communicator.cpp (+0/-1)
To merge this branch: bzr merge lp:~alan-griffiths/mir/tidy-code
Reviewer Review Type Date Requested Status
Daniel van Vugt Approve
Chris Halse Rogers Approve
Kevin DuBois (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+320338@code.launchpad.net

Commit message

Delete unused code

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4109
https://mir-jenkins.ubuntu.com/job/mir-ci/3196/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4297
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4384
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4374
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4374
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4374
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4324
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4324/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4324
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4324/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4324
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4324/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4324
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4324/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4324
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4324/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4324
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4324/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3196/rebuild

review: Approve (continuous-integration)
Revision history for this message
Kevin DuBois (kdub) wrote :

sure

review: Approve
Revision history for this message
Chris Halse Rogers (raof) wrote :

Seems sensible.

review: Approve
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Yes

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/client/CMakeLists.txt'
2--- src/client/CMakeLists.txt 2017-03-17 16:43:10 +0000
3+++ src/client/CMakeLists.txt 2017-03-20 12:15:49 +0000
4@@ -82,7 +82,6 @@
5 mir_buffer_stream_api.cpp
6 error_stream.cpp
7 error_render_surface.cpp
8- error_chain.cpp
9 buffer.cpp
10 error_buffer.cpp
11 mir_render_surface_api.cpp
12
13=== modified file 'src/client/buffer_stream.cpp'
14--- src/client/buffer_stream.cpp 2017-03-10 19:47:57 +0000
15+++ src/client/buffer_stream.cpp 2017-03-20 12:15:49 +0000
16@@ -408,12 +408,6 @@
17 return static_cast<EGLNativeWindowType>(egl_native_window_.get());
18 }
19
20-void mcl::BufferStream::release_cpu_region()
21-{
22- std::unique_lock<decltype(mutex)> lock(mutex);
23- secured_region.reset();
24-}
25-
26 std::shared_ptr<mcl::MemoryRegion> mcl::BufferStream::secure_for_cpu_write()
27 {
28 auto buffer = get_current_buffer();
29
30=== modified file 'src/client/buffer_stream.h'
31--- src/client/buffer_stream.h 2017-03-10 19:47:57 +0000
32+++ src/client/buffer_stream.h 2017-03-20 12:15:49 +0000
33@@ -141,10 +141,7 @@
34 private:
35 void process_buffer(protobuf::Buffer const& buffer);
36 void process_buffer(protobuf::Buffer const& buffer, std::unique_lock<std::mutex>&);
37- void on_scale_set(float scale);
38- void release_cpu_region();
39 MirWaitHandle* set_server_swap_interval(int i);
40- void init_swap_interval();
41 void wait_for_vsync();
42
43 mutable std::mutex mutex; // Protects all members of *this
44
45=== removed file 'src/client/error_chain.cpp'
46--- src/client/error_chain.cpp 2017-01-18 02:29:37 +0000
47+++ src/client/error_chain.cpp 1970-01-01 00:00:00 +0000
48@@ -1,63 +0,0 @@
49-/*
50- * Copyright © 2016 Canonical Ltd.
51- *
52- * This program is free software: you can redistribute it and/or modify it
53- * under the terms of the GNU Lesser General Public License version 3,
54- * as published by the Free Software Foundation.
55- *
56- * This program is distributed in the hope that it will be useful,
57- * but WITHOUT ANY WARRANTY; without even the implied warranty of
58- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59- * GNU Lesser General Public License for more details.
60- *
61- * You should have received a copy of the GNU Lesser General Public License
62- * along with this program. If not, see <http://www.gnu.org/licenses/>.
63- *
64- * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
65- */
66-
67-#include "error_chain.h"
68-#include <boost/throw_exception.hpp>
69-
70-namespace mcl = mir::client;
71-namespace geom = mir::geometry;
72-
73-mcl::ErrorChain::ErrorChain(
74- MirConnection* connection,
75- int id,
76- std::string const& error_msg) :
77- connection_(connection),
78- stream_id(id),
79- error(error_msg)
80-{
81-}
82-
83-char const* mcl::ErrorChain::error_msg() const
84-{
85- return error.c_str();
86-}
87-
88-MirConnection* mcl::ErrorChain::connection() const
89-{
90- return connection_;
91-}
92-
93-int mcl::ErrorChain::rpc_id() const
94-{
95- return stream_id;
96-}
97-
98-void mcl::ErrorChain::submit_buffer(MirBuffer*)
99-{
100- BOOST_THROW_EXCEPTION(std::logic_error("Cannot submit: invalid MirPresentationChain"));
101-}
102-
103-void mcl::ErrorChain::set_queueing_mode()
104-{
105- BOOST_THROW_EXCEPTION(std::logic_error("Cannot set mode: invalid MirPresentationChain"));
106-}
107-
108-void mcl::ErrorChain::set_dropping_mode()
109-{
110- BOOST_THROW_EXCEPTION(std::logic_error("Cannot set mode: invalid MirPresentationChain"));
111-}
112
113=== removed file 'src/client/error_chain.h'
114--- src/client/error_chain.h 2017-01-18 02:29:37 +0000
115+++ src/client/error_chain.h 1970-01-01 00:00:00 +0000
116@@ -1,51 +0,0 @@
117-/*
118- * Copyright © 2016 Canonical Ltd.
119- *
120- * This program is free software: you can redistribute it and/or modify
121- * it under the terms of the GNU Lesser General Public License version 3 as
122- * published by the Free Software Foundation.
123- *
124- * This program is distributed in the hope that it will be useful,
125- * but WITHOUT ANY WARRANTY; without even the implied warranty of
126- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
127- * GNU Lesser General Public License for more details.
128- *
129- * You should have received a copy of the GNU Lesser General Public License
130- * along with this program. If not, see <http://www.gnu.org/licenses/>.
131- *
132- * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
133- */
134-
135-#ifndef MIR_CLIENT_ERROR_CHAIN_H
136-#define MIR_CLIENT_ERROR_CHAIN_H
137-
138-#include "mir_presentation_chain.h"
139-#include <memory>
140-
141-namespace mir
142-{
143-namespace client
144-{
145-
146-class ErrorChain : public MirPresentationChain
147-{
148-public:
149- ErrorChain(
150- MirConnection* connection,
151- int id,
152- std::string const& error_msg);
153- void submit_buffer(MirBuffer* buffer) override;
154- MirConnection* connection() const override;
155- int rpc_id() const override;
156- char const* error_msg() const override;
157- void set_dropping_mode() override;
158- void set_queueing_mode() override;
159-private:
160- MirConnection* const connection_;
161- int const stream_id;
162- std::string const error;
163-};
164-
165-}
166-}
167-#endif /* MIR_CLIENT_ERROR_CHAIN_H */
168
169=== modified file 'src/client/input/input_event.cpp'
170--- src/client/input/input_event.cpp 2017-02-17 08:46:05 +0000
171+++ src/client/input/input_event.cpp 2017-03-20 12:15:49 +0000
172@@ -73,13 +73,6 @@
173 return ev->input_type();
174 })
175
176-int mir_input_event_get_window_id(MirInputEvent const* ev) MIR_HANDLE_EVENT_EXCEPTION(
177-{
178- expect_event_type(ev, mir_event_type_input);
179-
180- return ev->window_id();
181-})
182-
183 MirInputDeviceId mir_input_event_get_device_id(MirInputEvent const* ev) MIR_HANDLE_EVENT_EXCEPTION(
184 {
185 expect_event_type(ev, mir_event_type_input);
186
187=== modified file 'src/client/mir_connection.cpp'
188--- src/client/mir_connection.cpp 2017-03-14 04:41:33 +0000
189+++ src/client/mir_connection.cpp 2017-03-20 12:15:49 +0000
190@@ -40,7 +40,6 @@
191 #include "render_surface.h"
192 #include "error_render_surface.h"
193 #include "presentation_chain.h"
194-#include "error_chain.h"
195 #include "logging/perf_report.h"
196 #include "lttng/perf_report.h"
197 #include "buffer_factory.h"
198
199=== modified file 'src/client/presentation_chain.h'
200--- src/client/presentation_chain.h 2017-01-18 02:29:37 +0000
201+++ src/client/presentation_chain.h 2017-03-20 12:15:49 +0000
202@@ -25,7 +25,7 @@
203 #include "mir_toolkit/mir_presentation_chain.h"
204 #include "mir_protobuf.pb.h"
205 #include "buffer.h"
206-#include <mutex>
207+
208 #include <memory>
209
210 namespace mir
211@@ -65,9 +65,6 @@
212 std::shared_ptr<AsyncBufferFactory> const mir_buffer_factory;
213
214 BufferStreamConfiguration interval_config;
215-
216- std::mutex mutex;
217- std::vector<std::unique_ptr<Buffer>> buffers;
218 };
219 }
220 }
221
222=== modified file 'src/client/symbols.map'
223--- src/client/symbols.map 2017-03-20 12:15:49 +0000
224+++ src/client/symbols.map 2017-03-20 12:15:49 +0000
225@@ -302,19 +302,6 @@
226 extern "C++" {
227 mir::events::make_event*;
228 mir::events::add_touch*;
229- mir::input::android::Lexicon::translate*;
230- mir::input::android::android_modifiers_from_mir*;
231- mir::input::android::mir_modifiers_from_android*;
232- mir::input::android::mir_keyboard_action_from_android*;
233- mir::input::android::android_keyboard_action_from_mir*;
234- mir::input::android::mir_pointer_buttons_from_android*;
235- mir::input::android::android_pointer_buttons_from_mir*;
236- mir::input::android::mir_tool_type_from_android*;
237- mir::input::android::android_tool_type_from_mir*;
238- mir::input::android::mir_pointer_action_from_masked_android*;
239- mir::input::android::mir_touch_action_from_masked_android*;
240- mir::input::android::android_source_id_is_pointer_device*;
241- mir::input::android::extract_android_action_from*;
242 mir::client::DefaultConnectionConfiguration::DefaultConnectionConfiguration*;
243 mir::client::DefaultConnectionConfiguration::the_surface_map*;
244 mir::client::DefaultConnectionConfiguration::the_rpc_channel*;
245@@ -344,19 +331,12 @@
246 };
247 } MIR_CLIENT_DETAIL_9;
248
249-MIR_CLIENT_DETAIL_9v19 {
250- global:
251- extern "C++" {
252- mir::input::android::android_pointer_action_from_mir*;
253- };
254-} MIR_CLIENT_DETAIL_9v18;
255-
256 MIR_CLIENT_DETAIL_0.21 {
257 global:
258 extern "C++" {
259 mir::client::DefaultConnectionConfiguration::the_buffer_factory*;
260 };
261-} MIR_CLIENT_DETAIL_9v19;
262+} MIR_CLIENT_DETAIL_9v18;
263
264 MIR_CLIENT_DETAIL_private_buffer_semantics {
265 global:
266@@ -385,7 +365,7 @@
267 mir_presentation_chain_set_dropping_mode;
268 local:
269 *;
270-} MIR_CLIENT_DETAIL_9v19;
271+} MIR_CLIENT_DETAIL_9v18;
272
273 MIR_CLIENT_DETAIL_0.24 {
274 global:
275
276=== removed file 'src/include/common/mir/input/android/event_conversion_helpers.h'
277--- src/include/common/mir/input/android/event_conversion_helpers.h 2015-06-18 02:46:16 +0000
278+++ src/include/common/mir/input/android/event_conversion_helpers.h 1970-01-01 00:00:00 +0000
279@@ -1,60 +0,0 @@
280-/*
281- * Copyright © 2015 Canonical Ltd.
282- *
283- * This program is free software: you can redistribute it and/or modify it
284- * under the terms of the GNU Lesser General Public License version 3,
285- * as published by the Free Software Foundation.
286- *
287- * This program is distributed in the hope that it will be useful,
288- * but WITHOUT ANY WARRANTY; without even the implied warranty of
289- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
290- * GNU Lesser General Public License for more details.
291- *
292- * You should have received a copy of the GNU Lesser General Public License
293- * along with this program. If not, see <http://www.gnu.org/licenses/>.
294- *
295- * Authored by: Robert Carr <robert.carr@canonical.com>
296- */
297-
298-#ifndef MIR_INPUT_EVENT_CONVERSION_HELPERS_H_
299-#define MIR_INPUT_EVENT_CONVERSION_HELPERS_H_
300-
301-#include "mir_toolkit/event.h"
302-
303-namespace mir
304-{
305-namespace input
306-{
307-namespace android
308-{
309-MirInputEventModifiers mir_modifiers_from_android(int32_t android_modifiers);
310-int32_t android_modifiers_from_mir(MirInputEventModifiers modifiers);
311-
312-MirKeyboardAction mir_keyboard_action_from_android(int32_t android_action, int32_t repeat_count);
313-// Mir differentiates between mir_keyboard_action_down
314-// and mir_keyboard_action_repeat whereas android encodes
315-// keyrepeats as AKEY_EVENT_ACTION_DOWN and a repeatCount of > 0
316-// Thus when converting from MirKeyboardAction to an android
317-// action we must also fetch a repeat count for the android event.
318-int32_t android_keyboard_action_from_mir(int32_t& repeat_count_out, MirKeyboardAction action);
319-
320-MirPointerButtons mir_pointer_buttons_from_android(int32_t android_state);
321-int32_t android_pointer_buttons_from_mir(MirPointerButtons buttons);
322-
323-MirTouchTooltype mir_tool_type_from_android(int32_t android_tooltype);
324-int32_t android_tool_type_from_mir(MirTouchTooltype mir_tooltype);
325-
326-MirPointerAction mir_pointer_action_from_masked_android(int32_t android_action);
327-MirTouchAction mir_touch_action_from_masked_android(int32_t android_action);
328-
329-bool android_source_id_is_pointer_device(int32_t source_id);
330-
331-int32_t android_pointer_action_from_mir(MirPointerAction action, MirPointerButtons buttons_pressed);
332-int32_t extract_masked_android_action_from(MirEvent const& ev);
333-int32_t extract_android_action_from(MirEvent const& ev);
334-
335-}
336-}
337-}
338-
339-#endif // MIR_INPUT_EVENT_CONVERSION_HELPERS_H_
340
341=== modified file 'src/platforms/android/client/buffer.h'
342--- src/platforms/android/client/buffer.h 2017-01-18 02:29:37 +0000
343+++ src/platforms/android/client/buffer.h 2017-03-20 12:15:49 +0000
344@@ -56,10 +56,7 @@
345 Buffer(const Buffer&) = delete;
346 Buffer& operator=(const Buffer&) = delete;
347 private:
348- void pack_native_window_buffer();
349
350- mir::Fd mutable api_user_fence;
351-
352 std::shared_ptr<BufferRegistrar> const buffer_registrar;
353 std::shared_ptr<graphics::android::NativeBuffer> const native_buffer;
354 MirPixelFormat const buffer_pf;
355
356=== modified file 'src/platforms/android/server/platform.h'
357--- src/platforms/android/server/platform.h 2017-03-15 11:22:17 +0000
358+++ src/platforms/android/server/platform.h 2017-03-20 12:15:49 +0000
359@@ -64,7 +64,6 @@
360 std::shared_ptr<graphics::GraphicBufferAllocator> const buffer_allocator;
361 std::shared_ptr<DisplayComponentFactory> const display_buffer_builder;
362 std::shared_ptr<DisplayReport> const display_report;
363- std::shared_ptr<PlatformIpcOperations> const ipc_operations;
364 std::shared_ptr<DeviceQuirks> const quirks;
365 std::shared_ptr<NativeWindowReport> const native_window_report;
366 OverlayOptimization const overlay_option;
367
368=== modified file 'src/platforms/evdev/libinput_device.h'
369--- src/platforms/evdev/libinput_device.h 2017-03-14 02:26:28 +0000
370+++ src/platforms/evdev/libinput_device.h 2017-03-20 12:15:49 +0000
371@@ -82,9 +82,7 @@
372 OutputInfo get_output_info() const;
373
374 std::shared_ptr<InputReport> report;
375- std::shared_ptr<::libinput> lib;
376 std::vector<LibInputDevicePtr> devices;
377- std::shared_ptr<dispatch::Dispatchable> dispatchable_fd;
378
379 InputSink* sink{nullptr};
380 EventBuilder* builder{nullptr};
381
382=== modified file 'src/platforms/evdev/platform.h'
383--- src/platforms/evdev/platform.h 2017-02-15 07:38:33 +0000
384+++ src/platforms/evdev/platform.h 2017-03-20 12:15:49 +0000
385@@ -64,13 +64,10 @@
386 void continue_after_config() override;
387
388 private:
389- void scan_for_devices();
390 void device_added(libinput_device* dev);
391 void device_removed(libinput_device* dev);
392 void process_input_events();
393
394- std::shared_ptr<LibInputDevice> create_device(udev::Device const& dev) const;
395-
396 std::shared_ptr<InputReport> const report;
397 std::shared_ptr<udev::Context> const udev_context;
398 std::shared_ptr<InputDeviceRegistry> const input_device_registry;
399
400=== modified file 'src/server/input/config_changer.cpp'
401--- src/server/input/config_changer.cpp 2017-02-28 08:53:57 +0000
402+++ src/server/input/config_changer.cpp 2017-03-20 12:15:49 +0000
403@@ -136,7 +136,6 @@
404 mi::ConfigChanger& config_changer;
405 std::vector<std::shared_ptr<mi::Device>> added;
406 std::vector<MirInputDeviceId> removed;
407- bool devices_changed;
408 };
409
410 }
411
412=== modified file 'src/server/input/default_device.h'
413--- src/server/input/default_device.h 2017-02-28 08:53:57 +0000
414+++ src/server/input/default_device.h 2017-03-20 12:15:49 +0000
415@@ -72,7 +72,6 @@
416 optional_value<MirTouchscreenConfig> touchscreen_configuration() const override;
417 void apply_touchscreen_configuration(MirTouchscreenConfig const&) override;
418 private:
419- void wake_hub_for_device_change();
420 MirInputDeviceId const device_id;
421 InputDevice& device;
422 InputDeviceInfo const info;
423
424=== modified file 'src/server/input/default_input_device_hub.h'
425--- src/server/input/default_input_device_hub.h 2017-03-14 02:26:28 +0000
426+++ src/server/input/default_input_device_hub.h 2017-03-20 12:15:49 +0000
427@@ -80,7 +80,6 @@
428
429
430 private:
431- void update_spots();
432 void add_device_handle(std::shared_ptr<DefaultDevice> const& handle);
433 void remove_device_handle(MirInputDeviceId id);
434 void device_changed(Device* dev);
435
436=== modified file 'src/server/scene/surface_stack.h'
437--- src/server/scene/surface_stack.h 2016-01-29 08:18:22 +0000
438+++ src/server/scene/surface_stack.h 2017-03-20 12:15:49 +0000
439@@ -45,7 +45,6 @@
440 /// classes) and controller (SurfaceController) elements of an MVC design.
441 namespace scene
442 {
443-class InputRegistrar;
444 class BasicSurface;
445 class SceneReport;
446 class RenderingTracker;
447@@ -110,7 +109,6 @@
448
449 RecursiveReadWriteMutex mutable guard;
450
451- std::shared_ptr<InputRegistrar> const input_registrar;
452 std::shared_ptr<SceneReport> const report;
453
454 std::vector<std::shared_ptr<Surface>> surfaces;
455
456=== modified file 'tests/unit-tests/frontend/stress_protobuf_communicator.cpp'
457--- tests/unit-tests/frontend/stress_protobuf_communicator.cpp 2017-01-18 02:29:37 +0000
458+++ tests/unit-tests/frontend/stress_protobuf_communicator.cpp 2017-03-20 12:15:49 +0000
459@@ -65,7 +65,6 @@
460 mir::protobuf::SurfaceParameters surface_parameters;
461 mir::protobuf::Surface surface;
462 mir::protobuf::Void ignored;
463- mir::protobuf::Connection connection;
464
465 void create_surface_done();
466 void submit_buffer_done();

Subscribers

People subscribed via source and target branches