Merge lp:~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.3.0-3-1 into lp:ubuntu/oneiric/cairo-dock-plug-ins

Proposed by Matthieu Baerts
Status: Needs review
Proposed branch: lp:~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.3.0-3-1
Merge into: lp:ubuntu/oneiric/cairo-dock-plug-ins
Diff against target: 342 lines (+185/-78)
11 files modified
.pc/.version (+1/-0)
.pc/applied-patches (+1/-0)
.pc/fix_uppix_dnd2share_backend.patch/dnd2share/src/applet-backend-uppix.c (+126/-0)
debian/changelog (+18/-0)
debian/patches/01-ubuntuone-fix_upstream-version-2.3.0~2.1.patch (+0/-36)
debian/patches/02-weather-fix_upstream-version-2.3.0~2.2.patch (+0/-41)
debian/patches/fix_uppix_dnd2share_backend.patch (+18/-0)
debian/patches/series (+1/-0)
dnd2share/src/applet-backend-uppix.c (+1/-1)
stack/src/applet-stack.c (+18/-0)
systray/src/systray-interface.c (+1/-0)
To merge this branch: bzr merge lp:~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.3.0-3-1
Reviewer Review Type Date Requested Status
Matthieu Baerts (community) Needs Resubmitting
Michael Vogt (community) Needs Fixing
Review via email: mp+68944@code.launchpad.net

Description of the change

Hello,

The Cairo-Dock team proposes a bugs fixed version for its 2.3.0 branch.

This is the ChangeLog:
 * From 2.3.0~3 to 2.3.0~3.1:
   - Stack: fixed a bug that prevented from having more than 1 stack.
   - Systray: fixed a crash when inside the dock.

Please note that this new version fixes also this bug #811579 (Cairo-Dock Plug-Ins needs to be recompiled to fix a dependency issues)

How to reproduce the bugs:
   * Stack will not work correctly if there is more than one instance.
   * Enable the Systray (aka Notification Area) applet and put it into the dock (not in a desklet mode)

Thank you for your help

To post a comment you must log in.
Revision history for this message
Matthieu Baerts (matttbe) wrote :

I've a question to the Ubuntu Sponsors Team:
 The older version was 2.3.0~3-0ubuntu1. Should I now use 2.3.0~3-1ubuntu1 or 2.3.0~3.1-0ubuntu1?

22. By Matthieu Baerts

* debian/patches
 - Fixed the Uppix backend of the Drop to Share applet

Revision history for this message
Matthieu Baerts (matttbe) wrote :

Hi,

I've added a patch to fix a bug with the Uppix backend (Drop to Share/DND2Share applet)

Revision history for this message
Michael Vogt (mvo) wrote :

Thanks for proposing this branch!

When I test merge this branch into the ubuntu branch I see that the following two patches are
deleted:
-D debian/patches/01-ubuntuone-fix_upstream-version-2.3.0~2.1.patch
-D debian/patches/02-weather-fix_upstream-version-2.3.0~2.2.patch

Is this intentional? It looks like they are just leftovers that were not applied anyway, but it would be nice to mention it here.

review: Needs Fixing
Revision history for this message
Matthieu Baerts (matttbe) wrote :

Hello,

Sorry for this delay and for this lack of precisions and thank you for your help!

These patches have been removed on the rev 20 with the version 2.3.0~3-0ubuntu1 (now in upstream) but I've forgotten to delete these two files...

http://bazaar.launchpad.net/~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.3.0-3-1/revision/20

review: Needs Resubmitting
Revision history for this message
Matthieu Baerts (matttbe) wrote :

(arf, sorry for this new Resubmit status :( )

Revision history for this message
Matthieu Baerts (matttbe) wrote :

Unmerged revisions

22. By Matthieu Baerts

* debian/patches
 - Fixed the Uppix backend of the Drop to Share applet

21. By Matthieu Baerts

* New upstream release. (LP: #815026)
* Upstream ChangeLog:
 - Stack: fixed a bug that prevented from having more than 1 stack.
 - Systray: fixed a crash when inside the dock.
* This package needs to be recompiled in order to fix
   a dependency issues. (LP: #811579)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added directory '.pc'
=== added file '.pc/.version'
--- .pc/.version 1970-01-01 00:00:00 +0000
+++ .pc/.version 2011-07-28 10:10:29 +0000
@@ -0,0 +1,1 @@
12
02
=== added file '.pc/applied-patches'
--- .pc/applied-patches 1970-01-01 00:00:00 +0000
+++ .pc/applied-patches 2011-07-28 10:10:29 +0000
@@ -0,0 +1,1 @@
1fix_uppix_dnd2share_backend.patch
02
=== added directory '.pc/fix_uppix_dnd2share_backend.patch'
=== added directory '.pc/fix_uppix_dnd2share_backend.patch/dnd2share'
=== added directory '.pc/fix_uppix_dnd2share_backend.patch/dnd2share/src'
=== added file '.pc/fix_uppix_dnd2share_backend.patch/dnd2share/src/applet-backend-uppix.c'
--- .pc/fix_uppix_dnd2share_backend.patch/dnd2share/src/applet-backend-uppix.c 1970-01-01 00:00:00 +0000
+++ .pc/fix_uppix_dnd2share_backend.patch/dnd2share/src/applet-backend-uppix.c 2011-07-28 10:10:29 +0000
@@ -0,0 +1,126 @@
1/**
2* This file is a part of the Cairo-Dock project
3*
4* Copyright : (C) see the 'copyright' file.
5* E-mail : see the 'copyright' file.
6*
7* This program is free software; you can redistribute it and/or
8* modify it under the terms of the GNU General Public License
9* as published by the Free Software Foundation; either version 3
10* of the License, or (at your option) any later version.
11*
12* This program is distributed in the hope that it will be useful,
13* but WITHOUT ANY WARRANTY; without even the implied warranty of
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15* GNU General Public License for more details.
16* You should have received a copy of the GNU General Public License
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#define _BSD_SOURCE
21#include <stdlib.h>
22#include <math.h>
23#include <unistd.h>
24#include <glib/gstdio.h>
25
26#include "applet-struct.h"
27#include "applet-dnd2share.h"
28#include "applet-backend-uppix.h"
29
30#define NB_URLS 5
31static const gchar *s_UrlLabels[NB_URLS] = {"DirectLink", "DisplayImage", "BBCode150px", "BBCode600px", "BBCodeFullPic"};
32
33
34static void upload (const gchar *cFilePath, gchar *cDropboxDir, gboolean bAnonymous, gint iLimitRate, gchar **cResultUrls)
35{
36 // On cree un fichier de log temporaire.
37 gchar *cLogFile = g_strdup ("/tmp/dnd2share-log.XXXXXX");
38 int fds = mkstemp (cLogFile);
39 if (fds == -1)
40 {
41 g_free (cLogFile);
42 return ;
43 }
44 close(fds);
45
46 // On lance la commande d'upload.
47 gchar *cCommand = g_strdup_printf ("curl --connect-timeout 5 --retry 2 --limit-rate %dk uppix.net -F myimage=@\"%s\" -F submit=Upload -F formup=1 -o \"%s\"", iLimitRate, cFilePath, cLogFile); /// peut-on ajouter le nom de l'auteur dans le formulaire ?...
48 cd_debug ("%s", cCommand);
49 int r = system (cCommand);
50 g_free (cCommand);
51
52
53 // On récupère toutes les infos dans le fichier de log :
54 /// TODO : se passer des g_spawn_command_line_sync !
55 //D'abord l'url de DisplayImage
56 gchar *cDisplayImage = NULL;
57 gchar *cCommandDisplayImage = g_strdup_printf ("grep -oEm 1 '\\[url\\=([^]]*)' \"%s\"", cLogFile);
58 g_spawn_command_line_sync (cCommandDisplayImage, &cDisplayImage, NULL, NULL, NULL);
59 g_free (cCommandDisplayImage);
60
61 if (cDisplayImage == NULL || *cDisplayImage == '\0')
62 {
63 g_remove (cLogFile);
64 g_free (cLogFile);
65 return ;
66 }
67
68 gchar *str = g_strstr_len (cDisplayImage, -1, "http://"); // On retire tout ce qui se trouve avant http://
69 if (str != NULL && str != cDisplayImage)
70 {
71 gchar *tmp = cDisplayImage;
72 cDisplayImage = g_strdup (str);
73 g_free (tmp);
74 }
75 cDisplayImage[strlen(cDisplayImage) - 1] = '\0'; // on retire le \n à la fin
76 cd_debug ("dnd2share : Display Image = %s", cDisplayImage);
77
78 // Puis l'url de DirectLink
79 gchar *cDirectLink = NULL;
80 gchar *cCommandDirectLink = g_strdup_printf ("grep -oEm 1 '\\[img\\]([^[]*)' \"%s\"", cLogFile);
81 g_spawn_command_line_sync (cCommandDirectLink, &cDirectLink, NULL, NULL, NULL);
82 g_free (cCommandDirectLink);
83
84 str = g_strstr_len (cDirectLink, -1, "http://"); // On retire tout ce qui se trouve avant http://
85 if (str != NULL && str != cDirectLink)
86 {
87 gchar *tmp = cDirectLink;
88 cDirectLink = g_strdup (str);
89 g_free (tmp);
90 }
91 cDirectLink[strlen(cDirectLink) - 1] = '\0'; // on retire le \n à la fin
92 cd_debug ("dnd2share : Direct Link = %s", cDirectLink);
93
94 // Puis on créé les autres URLs à la mano ;-) :
95 gchar *cBBCodeFullPic = g_strdup_printf ("[img]%s[/img]", cDirectLink);
96 cd_debug ("dnd2share : BBCODE_Full = '%s'", cBBCodeFullPic);
97
98 gchar *cDirectLinkWithoutExt = g_strdup (cDisplayImage);
99 cDirectLinkWithoutExt[strlen(cDirectLinkWithoutExt) - 5] = '\0'; // on retire le .html à la fin
100 gchar *cBBCode150px = g_strdup_printf ("[url=%s][img]%st.jpg[/img][/url]", cDirectLink, cDirectLinkWithoutExt);
101 gchar *cBBCode600px = g_strdup_printf ("[url=%s][img]%stt.jpg[/img][/url]", cDirectLink, cDirectLinkWithoutExt);
102 g_free (cDirectLinkWithoutExt);
103 cd_debug ("dnd2share : BBCODE_150px = '%s'", cBBCode150px);
104 cd_debug ("dnd2share : BBCODE_600px = '%s'", cBBCode600px);
105
106 g_remove (cLogFile);
107 g_free (cLogFile);
108
109 // Enfin on remplit la memoire partagee avec nos URLs.
110 cResultUrls[0] = cDirectLink;
111 cResultUrls[1] = cDisplayImage;
112 cResultUrls[2] = cBBCode150px;
113 cResultUrls[3] = cBBCode600px;
114 cResultUrls[4] = cBBCodeFullPic;
115}
116
117
118void cd_dnd2share_register_uppix_backend (void)
119{
120 cd_dnd2share_register_new_backend (CD_TYPE_IMAGE,
121 "Uppix.net",
122 NB_URLS,
123 s_UrlLabels,
124 0,
125 upload);
126}
0127
=== modified file 'debian/changelog'
--- debian/changelog 2011-07-05 13:45:43 +0000
+++ debian/changelog 2011-07-28 10:10:29 +0000
@@ -1,3 +1,21 @@
1cairo-dock-plug-ins (2.3.0~3-1ubuntu2) natty; urgency=low
2
3 * debian/patches
4 - Fixed the Uppix backend of the Drop to Share applet
5
6 -- Matthieu Baerts (matttbe) <matttbe@gmail.com> Wed, 27 Jul 2011 23:58:24 +0200
7
8cairo-dock-plug-ins (2.3.0~3-1ubuntu1) UNRELEASED; urgency=low
9
10 * New upstream release. (LP: #815026)
11 * Upstream ChangeLog:
12 - Stack: fixed a bug that prevented from having more than 1 stack.
13 - Systray: fixed a crash when inside the dock.
14 * This package needs to be recompiled in order to fix
15 a dependency issues. (LP: #811579)
16
17 -- Matthieu Baerts (matttbe) <matttbe@gmail.com> Sat, 23 Jul 2011 12:10:37 +0200
18
1cairo-dock-plug-ins (2.3.0~3-0ubuntu1) oneiric; urgency=low19cairo-dock-plug-ins (2.3.0~3-0ubuntu1) oneiric; urgency=low
220
3 * New upstream release. (LP: #799774)21 * New upstream release. (LP: #799774)
422
=== removed file 'debian/patches/01-ubuntuone-fix_upstream-version-2.3.0~2.1.patch'
--- debian/patches/01-ubuntuone-fix_upstream-version-2.3.0~2.1.patch 2011-06-06 10:13:07 +0000
+++ debian/patches/01-ubuntuone-fix_upstream-version-2.3.0~2.1.patch 1970-01-01 00:00:00 +0000
@@ -1,36 +0,0 @@
1From: Matthieu Baerts <matttbe@gmail.com>
2Subject: dnd2share: UbuntuOne backend: wait for the end of the sync before publishing the link (to avoid a crash of u1sdtool)
3Origin: upstream, http://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-plug-ins/2.3.x/revision/1939
4Bug: http://www.glx-dock.org/tt_task.php?p=2&t=187
5Forwarded: yes
6
7Index: cairo-dock-plug-ins/CMakeLists.txt
8===================================================================
9--- cairo-dock-plug-ins.orig/CMakeLists.txt 2011-05-21 01:52:06.786633847 +0200
10+++ cairo-dock-plug-ins/CMakeLists.txt 2011-05-21 01:52:49.006695762 +0200
11@@ -299,7 +299,7 @@
12
13 ############# DND2SHARE #################
14 set (GETTEXT_DND2SHARE ${GETTEXT_PLUGINS})
15-set (VERSION_DND2SHARE "1.0.5")
16+set (VERSION_DND2SHARE "1.0.6")
17 set (PACKAGE_DND2SHARE "cd-dnd2share")
18 set (dnd2sharedatadir "${pluginsdatadir}/dnd2share")
19 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/dnd2share/data/dnd2share.conf.in ${CMAKE_CURRENT_BINARY_DIR}/dnd2share/data/dnd2share.conf)
20Index: cairo-dock-plug-ins/dnd2share/src/applet-backend-ubuntuone.c
21===================================================================
22--- cairo-dock-plug-ins.orig/dnd2share/src/applet-backend-ubuntuone.c 2011-05-21 01:52:06.806633864 +0200
23+++ cairo-dock-plug-ins/dnd2share/src/applet-backend-ubuntuone.c 2011-05-21 01:52:49.006695762 +0200
24@@ -54,8 +54,10 @@
25 return;
26 }
27
28- // On recupere l'URL (dispo tout de suite, sinon il faudra boucler en testant 'dropbox status' jusqu'a avoir 'Idle').
29- cCommand= g_strdup_printf ("u1sdtool --publish-file \"%s\"", cLocalFilePath);
30+ // We wait for the end of the sync
31+ cairo_dock_launch_command_sync ("u1sdtool --wait");
32+ // We publish the file and we read the output message
33+ cCommand = g_strdup_printf ("u1sdtool --publish-file \"%s\"", cLocalFilePath);
34 cd_debug ("commande u2 : %s", cCommand);
35 gchar *cResult = cairo_dock_launch_command_sync (cCommand);
36 g_free (cCommand);
370
=== removed file 'debian/patches/02-weather-fix_upstream-version-2.3.0~2.2.patch'
--- debian/patches/02-weather-fix_upstream-version-2.3.0~2.2.patch 2011-06-06 10:13:07 +0000
+++ debian/patches/02-weather-fix_upstream-version-2.3.0~2.2.patch 1970-01-01 00:00:00 +0000
@@ -1,41 +0,0 @@
1From: Matthieu Baerts <matttbe@gmail.com>
2Subject: Weather: prevent a crash if there is an error (thanks to Tsu Jan)
3Origin: upstream, http://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-plug-ins/2.3.x/revision/1940
4Bug: https://bugs.launchpad.net/ubuntu/+source/cairo-dock-plug-ins/+bug/788437
5Forwarded: yes
6
7Index: cairo-dock-plug-ins/weather/src/applet-read-data.c
8===================================================================
9--- cairo-dock-plug-ins.orig/weather/src/applet-read-data.c 2011-06-04 02:16:45.821196928 +0200
10+++ cairo-dock-plug-ins/weather/src/applet-read-data.c 2011-06-04 02:17:05.891226364 +0200
11@@ -304,13 +304,13 @@
12 {
13 gchar *cURL = g_strdup_printf (CD_WEATHER_BASE_URL"/weather/local/%s?cc=*%s", pSharedMemory->cLocationCode, (pSharedMemory->bISUnits ? "&unit=m" : ""));
14 cCCData = cairo_dock_get_url_data (cURL, &erreur);
15- g_free (cURL);
16 if (erreur != NULL)
17 {
18 cd_warning ("while downloading current conditions data:\n%s -> %s", cURL, erreur->message);
19 g_error_free (erreur);
20 erreur = NULL;
21 }
22+ g_free (cURL);
23 if (cCCData == NULL)
24 {
25 pSharedMemory->bErrorInThread = TRUE;
26@@ -324,7 +324,6 @@
27 {
28 gchar *cURL = g_strdup_printf (CD_WEATHER_BASE_URL"/weather/local/%s?dayf=%d%s", pSharedMemory->cLocationCode, pSharedMemory->iNbDays, (pSharedMemory->bISUnits ? "&unit=m" : ""));
29 cForecastData = cairo_dock_get_url_data (cURL, &erreur);
30- g_free (cURL);
31 if (erreur != NULL)
32 {
33 cd_warning ("while downloading forecast data:\n%s -> %s", cURL, erreur->message);
34@@ -332,6 +331,7 @@
35 erreur = NULL;
36 pSharedMemory->bErrorInThread = TRUE;
37 }
38+ g_free (cURL);
39 if (cForecastData == NULL)
40 {
41 pSharedMemory->bErrorInThread = TRUE;
420
=== added file 'debian/patches/fix_uppix_dnd2share_backend.patch'
--- debian/patches/fix_uppix_dnd2share_backend.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/fix_uppix_dnd2share_backend.patch 2011-07-28 10:10:29 +0000
@@ -0,0 +1,18 @@
1From: Matthieu Baerts (matttbe) <matttbe@gmail.com>
2Subject: Fixed uppix DND2Share backend.
3Origin: upstream, http://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-plug-ins/plug-ins/revision/2041
4Forwarded: yes
5
6Index: cairo-dock-plug-ins/dnd2share/src/applet-backend-uppix.c
7===================================================================
8--- cairo-dock-plug-ins.orig/dnd2share/src/applet-backend-uppix.c 2011-07-27 23:51:15.675945270 +0200
9+++ cairo-dock-plug-ins/dnd2share/src/applet-backend-uppix.c 2011-07-27 23:52:18.904258832 +0200
10@@ -44,7 +44,7 @@
11 close(fds);
12
13 // On lance la commande d'upload.
14- gchar *cCommand = g_strdup_printf ("curl --connect-timeout 5 --retry 2 --limit-rate %dk uppix.net -F myimage=@\"%s\" -F submit=Upload -F formup=1 -o \"%s\"", iLimitRate, cFilePath, cLogFile); /// peut-on ajouter le nom de l'auteur dans le formulaire ?...
15+ gchar *cCommand = g_strdup_printf ("curl --connect-timeout 5 --retry 2 --limit-rate %dk uppix.net -H Expect: -F myimage=@\"%s\" -F submit=Upload -F formup=1 -o \"%s\"", iLimitRate, cFilePath, cLogFile);
16 cd_debug ("%s", cCommand);
17 int r = system (cCommand);
18 g_free (cCommand);
019
=== added file 'debian/patches/series'
--- debian/patches/series 1970-01-01 00:00:00 +0000
+++ debian/patches/series 2011-07-28 10:10:29 +0000
@@ -0,0 +1,1 @@
1fix_uppix_dnd2share_backend.patch
02
=== modified file 'dnd2share/src/applet-backend-uppix.c'
--- dnd2share/src/applet-backend-uppix.c 2011-04-20 20:46:51 +0000
+++ dnd2share/src/applet-backend-uppix.c 2011-07-28 10:10:29 +0000
@@ -44,7 +44,7 @@
44 close(fds);44 close(fds);
45 45
46 // On lance la commande d'upload.46 // On lance la commande d'upload.
47 gchar *cCommand = g_strdup_printf ("curl --connect-timeout 5 --retry 2 --limit-rate %dk uppix.net -F myimage=@\"%s\" -F submit=Upload -F formup=1 -o \"%s\"", iLimitRate, cFilePath, cLogFile); /// peut-on ajouter le nom de l'auteur dans le formulaire ?...47 gchar *cCommand = g_strdup_printf ("curl --connect-timeout 5 --retry 2 --limit-rate %dk uppix.net -H Expect: -F myimage=@\"%s\" -F submit=Upload -F formup=1 -o \"%s\"", iLimitRate, cFilePath, cLogFile);
48 cd_debug ("%s", cCommand);48 cd_debug ("%s", cCommand);
49 int r = system (cCommand);49 int r = system (cCommand);
50 g_free (cCommand);50 g_free (cCommand);
5151
=== modified file 'stack/src/applet-stack.c'
--- stack/src/applet-stack.c 2011-04-20 20:46:51 +0000
+++ stack/src/applet-stack.c 2011-07-28 10:10:29 +0000
@@ -26,6 +26,24 @@
26 26
2727
28void cd_stack_check_local (CairoDockModuleInstance *myApplet, GKeyFile *pKeyFile) {28void cd_stack_check_local (CairoDockModuleInstance *myApplet, GKeyFile *pKeyFile) {
29
30 // be sure to not use the stack dir of another instance (it can happen when the applet is multi-instanciated, since new instances are initialized with the conf file of the first instance when they are created).
31 GList *mi;
32 CairoDockModuleInstance *applet;
33 AppletConfig *cfg;
34 for (mi = myApplet->pModule->pInstancesList; mi!= NULL; mi = mi->next)
35 {
36 applet = mi->data;
37 if (applet == myApplet)
38 continue;
39 cfg = (AppletConfig*)applet->pConfig;
40 if (cfg->cStackDir && strcmp (cfg->cStackDir, myConfig.cStackDir) == 0)
41 {
42 g_free (myConfig.cStackDir);
43 myConfig.cStackDir = NULL;
44 }
45 }
46
29 47
30 if (! g_file_test (myConfig.cStackDir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_EXECUTABLE))48 if (! g_file_test (myConfig.cStackDir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_EXECUTABLE))
31 {49 {
3250
=== modified file 'systray/src/systray-interface.c'
--- systray/src/systray-interface.c 2010-08-10 00:05:57 +0000
+++ systray/src/systray-interface.c 2011-07-28 10:10:29 +0000
@@ -36,6 +36,7 @@
36 CairoDialogAttribute attr;36 CairoDialogAttribute attr;
37 memset (&attr, 0, sizeof (CairoDialogAttribute));37 memset (&attr, 0, sizeof (CairoDialogAttribute));
38 attr.pInteractiveWidget = GTK_WIDGET (myData.tray);38 attr.pInteractiveWidget = GTK_WIDGET (myData.tray);
39 attr.bHideOnClick = TRUE; // keep the dialog alive on click (hide it).
39 myData.dialog = cairo_dock_build_dialog (&attr, myIcon, myContainer);40 myData.dialog = cairo_dock_build_dialog (&attr, myIcon, myContainer);
40 gtk_window_set_resizable (GTK_WINDOW(myData.dialog->container.pWidget), FALSE); /// utile ?...41 gtk_window_set_resizable (GTK_WINDOW(myData.dialog->container.pWidget), FALSE); /// utile ?...
41 cairo_dock_hide_dialog (myData.dialog);42 cairo_dock_hide_dialog (myData.dialog);

Subscribers

People subscribed via source and target branches