phpgroupware-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[phpGroupWare-developers] IMPORTANT : SVN Structure change (Was Re: Who


From: Maât
Subject: [phpGroupWare-developers] IMPORTANT : SVN Structure change (Was Re: Who wants to play?)
Date: Wed, 11 Nov 2009 13:40:01 +0100
User-agent: Thunderbird 2.0.0.23 (X11/20091009)

Sigurd Nes wrote:
>> Okay so : the per coder structure is now ready and follows the
>> core/module base svn architecture
>>
>> so for you sigurd the "core" place is there (and empty well i created
>> just the trunk/tags/branches level) :
>>
>> svn+ssh://address@hidden/phpgroupware/people/sigurdne/core
>>
>> and i also added an empty module repository for property in your tree
>> which is there :
>>
>> svn+ssh://address@hidden/phpgroupware/people/sigurdne/modules/property
>>
>> you have also the trunk/tags/branches level created so that it's useable
>> just out of the box :
----8<----
>
> It seems to work :)
>   
----8<----

Next step in progress : changing structure so that a single checkout is
needed to get started

Please mark this mail because the following info are really important to
get started.

PART FOR EVERYBODY WITHOUT COMMIT RIGHTS
################################################

Svn repositories (not repository because i have splitted them) share a
common root

which is publicly available there :

http://svn.savannah.gnu.org/svn/phpgroupware/

under this root we have core, modules and misc :

** core : the repository everybody (betatesters, bug hunters, svn loging
users) will want to checkout

under core we have :
------------------------

-- trunk : the last (hopefully fast) moving codebase with the last
exciting features (and currently the greatest number of bugs we want to
get rid of)

to get a working copy from there you just need to  checkout this url
with subversion (or any graphical svn client like tortoise) :
http://svn.savannah.gnu.org/svn/phpgroupware/core/trunk

-- branches : the various stable (and some of them outdated) branches...
for example you'll fint there the branch dedicated to current stable
versions  0.9.16.xxx

the here above stable branch name is "branch_0_9_16" i tried to
normalize all branch names ( branch_0_9_10 branch_0_9_12 branch_0_9_14
branch_0_9_16...)

to get a working copy from there you just need to  checkout this url
with subversion (or any graphical svn client like tortoise) :
http://svn.savannah.gnu.org/svn/phpgroupware/core/branches/branch_0_9_16

if you browse core trunk or one of the core branches in core you'll find
they are nearly empty : don't panic this is normal... once you begin the
check out svn will get all the needed phpgw modules which are located in
modules root dir (nice transition for the following subject)

** modules : a root dir located just aside core... modules contains one
repository (each with svn trunk / tags / branches canocical structure )
per module... you'll see there addressbook, notes, todo, property and
some more

for each module repository we have :
------------------------------------------

-- trunk : the last (hopefully fast) moving codebase with the last
exciting features (and currently the greatest number of bugs we want to
get rid of)

-- branches : the various stable (and some of them outdated) branches...
for example you'll fint there the branch dedicated to current stable
versions  0.9.16.xxx

the here above stable branch name is "branch_0_9_16" i tried to
normalize all branch names ( branch_0_9_10 branch_0_9_12 branch_0_9_14
branch_0_9_16...)

modules trunks are linked to core trunk through a subversion link system
using the svn property svn:externals

and modules branches are each linked to the appropriate core branch (
modules branches "branch_0_9_16" with core branch "branch_0_9_16" for
example) alike

most of the time you won't need to play with externals because most of
the phpgw modules are already linked

if you wan to get another module (let's take we are working in trunks)
just edit the svn:externals property of your working copy

it looks like this :

addressbook
http://svn.savannah.gnu.org/svn/phpgroupware/modules/addressbook/trunk
admin http://svn.savannah.gnu.org/svn/phpgroupware/modules/admin/trunk
calendar http://svn.savannah.gnu.org/svn/phpgroupware/modules/calendar/trunk
email http://svn.savannah.gnu.org/svn/phpgroupware/modules/email/trunk

if you wan to add for example the module stocks juste add a line like this
stocks http://svn.savannah.gnu.org/svn/phpgroupware/modules/stocks/trunk

and update :)

The property svn:externals will appear as modified in svn status but as
http://svn.savannah.gnu.org/svn repositories are read-only you'll nver
break anything even if you try a svn commit :)


PART FOR APP MAINTAINERS WITH COMMIT RIGHTS
##################################################

This part is also for people interrested in becomin' maintainers :)

the root for your app must be changed so that you can commit without
savannah rejecting you

So in svn:externals you have the to edit the line of your app changing
the url root http://svn.savannah.gnu.org/svn/phpgroupware with
svn+ssh://svn.savannah.gnu.org/phpgroupware or
svn+ssh://address@hidden/phpgroupware

and run a svn update on your working copy : you app will be updated and
the commits will be accepted by savannah

if you maintain severas apps just change each needed line in svn:externals

WARNING : Double check the coherence of svn:externals urls... if you
check out a working copy for 0.9.16.X branch and target the trunk of
your app with svn:externals there are very few chances to see it work :)


PART FOR PHPGW MAINTAINERS WITH COMMIT RIGHTS
######################################################

This part is also for people interrested in becomin' maintainers :)

if you need to :
-- patch phpgw root doc
-- patch one of the few files located in core repository
-- create new branches (for example the waited branch_0_9_18)
-- publish releases (for that we need to play with tags... that will be
for an other kilometer-long mail :) )

then you need to commit on core repository

for that you need to check out with the svn+ssh root url :

for trunk :

svn co svn+ssh://address@hidden/phpgroupware/core/trunk

for branch_0_9_16 :

svn co
vn+ssh://address@hidden/phpgroupware/core/branches/branch_0_9_16

PART FOR PERSONAL REPOSITORIES USAGE
##########################################

aside core and modules there is a people root dit with inside one
directory per coder

under each coder directory you have the same structure with core and
modules (but it's empty till people play with them)

that will allow coders to play each in his own sandbox without fearing
to break things in reference structure... once a new feature is working
in personal repository the coder can merge his code in the maintream in
one shot... that will allow us to have a nice commit log in maintream :)

for example in my personal core/trunk i can have a copy of root
core/trunk with just a change on svn:externals so that i use svn+ssh for
ged on my own modules/ged repository

then a checkout on svn co
svn+ssh://address@hidden/phpgroupware/people/maat/core/trunk
gives me a ready-to-code working copy

That structure can also allow, for example, to use a customized phpgwapi
with new features not yed teady for mainstream inclusion

So changing just the phpgwapi svn:externals link to
svn+ssh://address@hidden/phpgroupware/people/nickname/modules/phpgwapi/trunk
will allow to play with this patched api and test it with the current
official modules trunks



Thanks all and apologies for this really long mail

Maât










reply via email to

[Prev in Thread] Current Thread [Next in Thread]