<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<body style="background-color: #fff;">
<span style="display:none"> </span>
<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
<div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->
<div id="ygrp-text" >
<p>
Hi, I'm sharing this in case anybody has done it already/documented
it and I'm missing something. <br>
I'll plan on putting in the wiki if useful.<br>
<br>
So my objective, for my workflow is to be able to easily manage my
changes, do stability testing, and if they are of interest they can
be available for going upstream into nuttx.<br>
Traditionally shaking out stability issues in embedded environment
is a drawn out process, and need to handle multiple streams of
development and stability at the same time.<br>
<span style="font-size:11.0pt;font-family:"Calibri",sans-serif;"><a class="moz-txt-link-freetext" href="http://nvie.com/posts/a-successful-git-branching-model/">http://nvie.com/posts/a-successful-git-branching-model/</a>
</span><br>
So here is how I think this could work for Nuttx - this allows for
multiple forks and multiple build spaces for testing and merging.<br>
<br>
Sign into bitbucket.org , then clone the following into
bitbucket/<userSpace><br>
(either setup SSH or use the https form instead of
<a class="moz-txt-link-abbreviated" href="mailto:***@bitbucket.org">***@bitbucket.org</a>:.... )<br>
bitbucket.org/patacongo/nuttx to ZZ_NuttX Description: <your
plans for the fork><br>
bitbucket.org/nuttx/apps ZZ_nuttapps Description:
<your plans for an apps><br>
bitbucket.org/nuttx/arch ZZ_nuttx-arch Description:
Required as part of nuttx<br>
bitbucket.org/nuttx/boards ZZ_nuttx-config “Nuttx boards
definitions”<br>
<br>
Then on local machine (tested Ubuntu14.04)<br>
$cd git<br>
$mkdir nxYY # - YY userdefined<br>
$cd nxYY<br>
<br>
$git clone <a class="moz-txt-link-abbreviated" href="mailto:***@bitbucket.org">***@bitbucket.org</a>:<user>/ZZ_nuttapps.git apps<br>
$git clone <a class="moz-txt-link-abbreviated" href="mailto:***@bitbucket.org">***@bitbucket.org</a>:<user>/ZZ_nuttx.git nuttx<br>
$cd nuttx<br>
git remote –v #(origin should be above)<br>
$ git config --file=.gitmodules --l #or cat .gitmodules<br>
<br>
#first time through - change super-project submodules to git
super-project ignored project directories<br>
echo "/configs/*" >> .gitignore<br>
echo "/arch/*" >> .gitignore<br>
<br>
git config --file=.gitmodules --remove-section submodule.configs<br>
git config --file=.gitmodules --remove-section submodule.arch<br>
<br>
# if "git subproject" run there will be .git/modules/arch
.git/modules/configs and need to delete<br>
# remove any possibility/traces of subproject<br>
rm -rf arch<br>
rm -rf configs<br>
<br>
#create buildable tree and store in bitbucket.or/user/ZZ_nuttX/<br>
git clone <a class="moz-txt-link-abbreviated" href="mailto:***@bitbucket.org">***@bitbucket.org</a>:<user>/ZZ_nuttx-configs.git
configs <br>
git clone <a class="moz-txt-link-abbreviated" href="mailto:***@bitbucket.org">***@bitbucket.org</a>:<user>/ZZ_nuttx-arch.git arch <br>
git status #shows arch and configs but git ignores any action on
them (I hope)<br>
git add .gitignore <br>
git add .gitmodules<br>
git commit -m "changed submodule arch configs to directory" <br>
git push origin master<br>
#end-first time<br>
<br>
#optionally do this for submodule nutt/Documentation first time
through<br>
git submodule update --init --recursive --remote #creates entries in
.git/config and update<br>
<br>
make distclean<br>
# Build target project and verify works<br>
cd tools<br>
$ ./configure.sh stm32f429i-disco/usbmsc<br>
cd ..<br>
make menuconfig #save to latest format<br>
make #test build, verify Nuttx.bin works before continuing<br>
<br>
# Do the following for changes to any one of three "projects" <br>
# superproject nuttx & subprojects nuttx/arch and nuttx/config<br>
#eg for nuttx/arch (repeat for other projects as needed)<br>
cd arch<br>
git branch develop #baseline for future: only first time through <br>
<br>
git checkout -b work-stm32-usbhwfi #descriptive name for changes
everytime creating a new branch<br>
git branch #list branches<br>
git status # should be no changes<br>
<<make changes, build and test>><br>
git status # list changes<br>
git add . <br>
git commit -m "myComments" <br>
git push origin work-stm32-usbhwfi<br>
# On Bitbucket check commit is as expected.<br>
<br>
#branchedWorkflow: Ideally private branch 'develop' is aligned with
a Nuttx release number and <br>
# all updates are along branch develop and <work-branches> <br>
#until ready to offer a patch to the main branch, <br>
# in which case it will all have to be brought uptodate with a
defined Nuttx release number or tip<br>
<br>
#some commands to incorporate a finished work-item on the branch
develop<br>
$ git checkout develop #Switched to branch 'develop'<br>
$ git merge --no-ff work-stm32-usbhwfi #the real work merged to
branch develop, and I check it<br>
$ git branch -d myfeature # Delete branch at your own risk <br>
$ git push origin develop<br>
<br>
#To sync with nuttx tip, (any tip) could be challenging based on
number of updates and a number of methods to do it<br>
# a) Use the bitbucket.org sync button, if no conflicts then on
local machine "git checkout master, git pull, git merge -no-ff
develop, generate patch" if conflicts going to need to merge them<br>
# b) If other conflicts <<tbd>><br>
<br>
If anybody sees a better way, be delighted to hear it.<br>
<pre class="moz-signature" cols="72">Neil</pre>
<br>
</p>
</div>
<!--~-|**|PrettyHtmlStart|**|-~-->
<div style="color: #fff; height: 0;">__._,_.___</div>
<div style="clear:both"> </div>
<div id="fromDMARC" style="margin-top: 10px;">
<hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;">
Posted by: Neilh <***@biomonitors.com> <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;">
</div>
<div style="clear:both"> </div>
<table cellspacing=4px style="margin-top: 10px; margin-bottom: 10px; color: #2D50FD;">
<tbody>
<tr>
<td style="font-size: 12px; font-family: arial; font-weight: bold; padding: 7px 5px 5px;" >
<a style="text-decoration: none; color: #2D50FD" href="https://groups.yahoo.com/neo/groups/nuttx/conversations/messages/10814;_ylc=X3oDMTJyNmtuMmIwBF9TAzk3MzU5NzE0BGdycElkAzIzMzg5MDcwBGdycHNwSWQDMTcwNTAwNjU1OQRtc2dJZAMxMDgxNARzZWMDZnRyBHNsawNycGx5BHN0aW1lAzE0NTI5OTI2MTk-?act=reply&messageNum=10814">Reply via web post</a>
</td>
<td>•</td>
<td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;" >
<a href="mailto:***@biomonitors.com?subject=Re%3A%20Using%20branched%20workflow%20on%20nuttx" style="text-decoration: none; color: #2D50FD;">
Reply to sender </a>
</td>
<td>•</td>
<td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;">
<a href="mailto:***@yahoogroups.com?subject=Re%3A%20Using%20branched%20workflow%20on%20nuttx" style="text-decoration: none; color: #2D50FD">
Reply to group </a>
</td>
<td>•</td>
<td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;" >
<a href="https://groups.yahoo.com/neo/groups/nuttx/conversations/newtopic;_ylc=X3oDMTJmcmdkYnFuBF9TAzk3MzU5NzE0BGdycElkAzIzMzg5MDcwBGdycHNwSWQDMTcwNTAwNjU1OQRzZWMDZnRyBHNsawNudHBjBHN0aW1lAzE0NTI5OTI2MTk-" style="text-decoration: none; color: #2D50FD">Start a New Topic</a>
</td>
<td>•</td>
<td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;color: #2D50FD;" >
<a href="https://groups.yahoo.com/neo/groups/nuttx/conversations/topics/10799;_ylc=X3oDMTM3NmV2MGdiBF9TAzk3MzU5NzE0BGdycElkAzIzMzg5MDcwBGdycHNwSWQDMTcwNTAwNjU1OQRtc2dJZAMxMDgxNARzZWMDZnRyBHNsawN2dHBjBHN0aW1lAzE0NTI5OTI2MTkEdHBjSWQDMTA3OTk-" style="text-decoration: none; color: #2D50FD;">Messages in this topic</a>
(12)
</td>
</tr>
</tbody>
</table>
<!------- Start Nav Bar ------>
<!-- |**|begin egp html banner|**| -->
<!-- |**|end egp html banner|**| -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #f2f2f2; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
<span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; "><a href="https://groups.yahoo.com/neo/groups/nuttx/info;_ylc=X3oDMTJma2VxcnFjBF9TAzk3MzU5NzE0BGdycElkAzIzMzg5MDcwBGdycHNwSWQDMTcwNTAwNjU1OQRzZWMDdnRsBHNsawN2Z2hwBHN0aW1lAzE0NTI5OTI2MTk-" style="text-decoration: none;">Visit Your Group</a></span>
<ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
<li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;">
<span class="cat"><a href="https://groups.yahoo.com/neo/groups/nuttx/members/all;_ylc=X3oDMTJnbGZjNGNmBF9TAzk3MzU5NzE0BGdycElkAzIzMzg5MDcwBGdycHNwSWQDMTcwNTAwNjU1OQRzZWMDdnRsBHNsawN2bWJycwRzdGltZQMxNDUyOTkyNjE5" style="text-decoration: none;">New Members</a></span>
<span class="ct" style="color: #ff7900;">1</span>
</li>
</ul>
</div>
<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
<a href="https://groups.yahoo.com/neo;_ylc=X3oDMTJlMDNmbjk0BF9TAzk3NDc2NTkwBGdycElkAzIzMzg5MDcwBGdycHNwSWQDMTcwNTAwNjU1OQRzZWMDZnRyBHNsawNnZnAEc3RpbWUDMTQ1Mjk5MjYxOQ--" style="float: left;"><img src="http://l.yimg.com/ru/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
<div style="color: #747575; float: right;"> • <a href="https://info.yahoo.com/privacy/us/yahoo/groups/details.html" style="text-decoration: none;">Privacy</a> • <a href="mailto:nuttx-***@yahoogroups.com?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> • <a href="https://info.yahoo.com/legal/us/yahoo/utos/terms/" style="text-decoration: none;">Terms of Use</a> </div>
</div>
<br>
<!-- |**|end egp html banner|**| -->
</div> <!-- ygrp-msg -->
<!-- Sponsor -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">
<!-- Start Recommendations -->
<div id="ygrp-reco">
</div>
<!-- End Recommendations -->
</div> <!-- |**|end egp html banner|**| -->
<div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>
<img src="http://geo.yahoo.com/serv?s=97359714/grpId=23389070/grpspId=1705006559/msgId=10814/stime=1452992619" width="1" height="1"> <br>
<img src="http://y.analytics.yahoo.com/fpc.pl?ywarid=515FB27823A7407E&a=10001310322279&js=no&resp=img" width="1" height="1">
<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</body>
<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
<style type="text/css">
<!--
#ygrp-mkp {
border: 1px solid #d8d8d8;
font-family: Arial;
margin: 10px 0;
padding: 0 10px;
}
#ygrp-mkp hr {
border: 1px solid #d8d8d8;
}
#ygrp-mkp #hd {
color: #628c2a;
font-size: 85%;
font-weight: 700;
line-height: 122%;
margin: 10px 0;
}
#ygrp-mkp #ads {
margin-bottom: 10px;
}
#ygrp-mkp .ad {
padding: 0 0;
}
#ygrp-mkp .ad p {
margin: 0;
}
#ygrp-mkp .ad a {
color: #0000ff;
text-decoration: none;
}
#ygrp-sponsor #ygrp-lc {
font-family: Arial;
}
#ygrp-sponsor #ygrp-lc #hd {
margin: 10px 0px;
font-weight: 700;
font-size: 78%;
line-height: 122%;
}
#ygrp-sponsor #ygrp-lc .ad {
margin-bottom: 10px;
padding: 0 0;
}
#actions {
font-family: Verdana;
font-size: 11px;
padding: 10px 0;
}
#activity {
background-color: #e0ecee;
float: left;
font-family: Verdana;
font-size: 10px;
padding: 10px;
}
#activity span {
font-weight: 700;
}
#activity span:first-child {
text-transform: uppercase;
}
#activity span a {
color: #5085b6;
text-decoration: none;
}
#activity span span {
color: #ff7900;
}
#activity span .underline {
text-decoration: underline;
}
.attach {
clear: both;
display: table;
font-family: Arial;
font-size: 12px;
padding: 10px 0;
width: 400px;
}
.attach div a {
text-decoration: none;
}
.attach img {
border: none;
padding-right: 5px;
}
.attach label {
display: block;
margin-bottom: 5px;
}
.attach label a {
text-decoration: none;
}
blockquote {
margin: 0 0 0 4px;
}
.bold {
font-family: Arial;
font-size: 13px;
font-weight: 700;
}
.bold a {
text-decoration: none;
}
dd.last p a {
font-family: Verdana;
font-weight: 700;
}
dd.last p span {
margin-right: 10px;
font-family: Verdana;
font-weight: 700;
}
dd.last p span.yshortcuts {
margin-right: 0;
}
div.attach-table div div a {
text-decoration: none;
}
div.attach-table {
width: 400px;
}
div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
text-decoration: none;
}
div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
text-decoration: none;
}
div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
font-family: Verdana;
font-size: 10px;
font-weight: normal;
}
.green {
color: #628c2a;
}
.MsoNormal {
margin: 0 0 0 0;
}
o {
font-size: 0;
}
#photos div {
float: left;
width: 72px;
}
#photos div div {
border: 1px solid #666666;
height: 62px;
overflow: hidden;
width: 62px;
}
#photos div label {
color: #666666;
font-size: 10px;
overflow: hidden;
text-align: center;
white-space: nowrap;
width: 64px;
}
#reco-category {
font-size: 77%;
}
#reco-desc {
font-size: 77%;
}
.replbq {
margin: 4px;
}
#ygrp-actbar div a:first-child {
/* border-right: 0px solid #000;*/
margin-right: 2px;
padding-right: 5px;
}
#ygrp-mlmsg {
font-size: 13px;
font-family: Arial, helvetica,clean, sans-serif;
*font-size: small;
*font: x-small;
}
#ygrp-mlmsg table {
font-size: inherit;
font: 100%;
}
#ygrp-mlmsg select, input, textarea {
font: 99% Arial, Helvetica, clean, sans-serif;
}
#ygrp-mlmsg pre, code {
font:115% monospace;
*font-size:100%;
}
#ygrp-mlmsg * {
line-height: 1.22em;
}
#ygrp-mlmsg #logo {
padding-bottom: 10px;
}
#ygrp-msg p a {
font-family: Verdana;
}
#ygrp-msg p#attach-count span {
color: #1E66AE;
font-weight: 700;
}
#ygrp-reco #reco-head {
color: #ff7900;
font-weight: 700;
}
#ygrp-reco {
margin-bottom: 20px;
padding: 0px;
}
#ygrp-sponsor #ov li a {
font-size: 130%;
text-decoration: none;
}
#ygrp-sponsor #ov li {
font-size: 77%;
list-style-type: square;
padding: 6px 0;
}
#ygrp-sponsor #ov ul {
margin: 0;
padding: 0 0 0 8px;
}
#ygrp-text {
font-family: Georgia;
}
#ygrp-text p {
margin: 0 0 1em 0;
}
#ygrp-text tt {
font-size: 120%;
}
#ygrp-vital ul li:last-child {
border-right: none !important;
}
-->
</style>
</head>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->