[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-active
Subject:    Re: Workflow and integration
From:       "Lamarque V. Souza" <Lamarque.Souza.ext () basyskom ! com>
Date:       2012-03-30 14:19:32
Message-ID: 201203301119.32274.Lamarque.Souza.ext () basyskom ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Em Friday 30 March 2012, Marco Martin escreveu:
> Hi all,

	Hi,
 
> this is a proposal on how to handle the development in a way where is
> easier to assure qa and have device specific images.
> 
> from a short chat with some people it was seen there was a need of
> reorganizing a bit how git branches are kept and how this reflects on obs.
> I am explaining it now how i understood it, so please correct if wrong ;)
> 
> * Need for a stable, always releasable master
> * How to do that? an "integration" branch
> * integration is kept always merged, up to date with master
> * features are developed in feature only branches
> * when a feature is almost ready is merged into integration, people test
> it, fixes are done in the feature branch, then re-merged

	What happened if a feature from on repo depends on a feature from 
another repo's integration branch? I use obs to compile packages and test 
features here. In my case I would need to hack obs to compile two (or more) 
packages whose .tar.bz2 are not in obs. I usually do that for one package, but 
when I need to do that for two packages at the same time it gets way more 
complicated because of the dependencies. People who use Mer SDK would have the 
same problem too.

> * when tested enough, it gets merged into master
> * Device specific (Archos, vivaldi, whatever) releases are branches of
> master called like Device/Vivaldi (only a stable state needed? or
> integration/stable for that too?)
> 
> This reflects in obs in the following way
> * integration project points to integration branch, (or devel can be
> repurposed to it)
> * testing project points to master: master became a stable branch now
> * Each device specific git branch has an own obs project

	Why use a git branches instead of sub-directories? With sub-directories 
we can use only one obs project to build all rpm packages for all devices and 
minimize the burden of maintaining different copies of the same files. For 
instance, we can create a "shared" sub-directory which contains all 
configuration files, if a device needs a different configuration file we 
create a sub-directory for that device and copy only the files that it needs. 
Then we configure the .spec to, during installation phase, copy the shared 
directory to the BUILD_ROOT and then override the files there with the ones 
from the device's sub-directory. This way we only duplicate the files that 
needed to be duplicated and not all of them. Moreover we also avoid 
duplicating several .spec (for each device) that in other way would me almost 
equal to each other.

	There is only one problem with that approach, all sub-packages would 
have the same version, so when doing a change for one device that would 
trigger a sub-package creation for all other devices and probably an update 
that is not really needed. As long as the configuration packages are small 
(and they are for now) I do not see a big problem here.

-- 
Lamarque V. Souza
http://www.basyskom.com/

[Attachment #5 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" \
"http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" \
content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Tahoma'; font-size:12pt; font-weight:400; \
font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Em Friday \
30 March 2012, Marco Martin escreveu:</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; Hi all,</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">	Hi,</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"> </p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; this is a proposal on \
how to handle the development in a way where is</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; easier to assure qa and have device specific \
images.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; </p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; from a short chat with \
some people it was seen there was a need of</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; reorganizing a bit how git branches are kept \
and how this reflects on obs.</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; I am explaining it now how i understood it, so please correct \
if wrong ;)</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; </p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; * Need for a stable, \
always releasable master</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; * How to do that? an &quot;integration&quot; branch</p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; * integration is kept \
always merged, up to date with master</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; * features are developed in feature only \
branches</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; * when \
a feature is almost ready is merged into integration, people test</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; it, fixes are done in \
the feature branch, then re-merged</p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">	What happened if a feature from on repo depends \
on a feature from another repo's integration branch? I use obs to compile packages \
and test features here. In my case I would need to hack obs to compile two (or more) \
packages whose .tar.bz2 are not in obs. I usually do that for one package, but when I \
need to do that for two packages at the same time it gets way more complicated \
because of the dependencies. People who use Mer SDK would have the same problem \
too.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; * when tested enough, it \
gets merged into master</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; * Device specific (Archos, vivaldi, whatever) releases are \
branches of</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; master \
called like Device/Vivaldi (only a stable state needed? or</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; integration/stable for \
that too?)</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; </p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; This reflects in obs in \
the following way</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; * \
integration project points to integration branch, (or devel can be</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; repurposed to it)</p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; * testing project points \
to master: master became a stable branch now</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; * Each device specific git branch has an own \
obs project</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; ">&nbsp;</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">	Why use a git branches instead of sub-directories? With \
sub-directories we can use only one obs project to build all rpm packages for all \
devices and minimize the burden of maintaining different copies of the same files. \
For instance, we can create a &quot;shared&quot; sub-directory which contains all \
configuration files, if a device needs a different configuration file we create a \
sub-directory for that device and copy only the files that it needs. Then we \
configure the .spec to, during installation phase, copy the shared directory to the \
BUILD_ROOT and then override the files there with the ones from the device's \
sub-directory. This way we only duplicate the files that needed to be duplicated and \
not all of them. Moreover we also avoid duplicating several .spec (for each device) \
that in other way would me almost equal to each other.</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">	There is only one problem \
with that approach, all sub-packages would have the same version, so when doing a \
change for one device that would trigger a sub-package creation for all other devices \
and probably an update that is not really needed. As long as the configuration \
packages are small (and they are for now) I do not see a big problem here.</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">-- </p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Lamarque V. Souza</p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">http://www.basyskom.com/</p></body></html>



_______________________________________________
Active mailing list
Active@kde.org
https://mail.kde.org/mailman/listinfo/active


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic