svn + drupal

6 contenuti / 0 new
Ultimo contenuto
svn + drupal

Premessa: se la sezione è errata, magari spostatelo altrove :O

Devo sviluppare con un team un network con drupal. Essendo un team in remoto, abbiamo pensato di utilizzare l'svn per gestire il tutto.
Teoria vuole che un repository dovrebbe essere organizzato così:

  • trunk: la main line del software, il punto di inizio nonché l'ultima release effettuata. si fa il merge delle branch quando appunto si fa un nuovo rilascio
  • branches: solitamente le alpha, beta, release candidate del progetto
  • tags: dei riferimenti umani alle revisioni create; è più facile trovare ad esempio un "alpha1.0" che la revisione 4323209 xD

A parte il sapere accademico, voi come organizzate un repository che non occupi troppo spazio su HD e che non sia troppo complesso quando si debba testare in sviluppo?

Grazie

Io lavoro al contrario, non è canonico, ma è il modo che ho trovato più comodo:

  • Tutti lavorano sul trunk
  • Alle varie relase si fanno dei branch e vengono tenuti stabili questi, su cui vengono fatti i diversi bugfix.
  • Ogni rilascio in produzione dei bugfix viene taggato

Per farti un esempio, progetto MIOPROGETTO, ho:

trunk
branches
  - MIOPROGETTO-1
  - MIOPROGETTO-2
  - MIOPROGETTO-3
tags
  - MIOPROGETTO-1.0
  - MIOPROGETTO-1.1
  - MIOPROGETTO-1.2
  - MIOPROGETTO-1.3
  - MIOPROGETTO-2.0
  - MIOPROGETTO-2.1
  - MIOPROGETTO-3.0
  - MIOPROGETTO-3.1
  - MIOPROGETTO-3.2

ripeto, è una mia convenzione, che presto modificherò (spero) in favore di una maggiore frammentazione dei repo ed un uso più massiccio di feature/drush/drush-make.

Ciao
Marco
--
My blog
Working at @agavee

Ciao, visto che anche drupal.org si è spostato su git perché non Lo usi anche tu?

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

mavimo wrote:
Io lavoro al contrario, non è canonico, ma è il modo che ho trovato più comodo:

  • Tutti lavorano sul trunk
  • Alle varie relase si fanno dei branch e vengono tenuti stabili questi, su cui vengono fatti i diversi bugfix.
  • Ogni rilascio in produzione dei bugfix viene taggato

Per farti un esempio, progetto MIOPROGETTO, ho:

trunk
branches
  - MIOPROGETTO-1
  - MIOPROGETTO-2
  - MIOPROGETTO-3
tags
  - MIOPROGETTO-1.0
  - MIOPROGETTO-1.1
  - MIOPROGETTO-1.2
  - MIOPROGETTO-1.3
  - MIOPROGETTO-2.0
  - MIOPROGETTO-2.1
  - MIOPROGETTO-3.0
  - MIOPROGETTO-3.1
  - MIOPROGETTO-3.2

ripeto, è una mia convenzione, che presto modificherò (spero) in favore di una maggiore frammentazione dei repo ed un uso più massiccio di feature/drush/drush-make.


ignoro feature/drush/drush-make :(

su trunk avresti un'installazione compelta di drupal, dico il cms + eventuali sites/ (con moduli third e custom) + eventuali profiles, giusto? tutti lavorano là e committano quando dovrebbero farlo.
i file di configurazione, che si differenziano per host (alludo a settings.php, .htaccess, l'aggiunta di php.ini su aruba, config.php di FCKEditor), hanno le versioni base "vergini" fresche di installazione insieme a diverse copie file in base all'host di destinazione ipotizzato se queste esistono (ad esempio aruba.php.ini, aruba.htacces, aruba.settings.php) e, infine, le copie locali di ognuno per poter testare quanto fatto, magari dando a questi file i nomi corretti (per poter esser visti dal cms) e dando loro il comando svn:ignore, il tutto nella trunk. È corretto?

I branch delle varie release contengono tutto il progetto, installazione compresa? Se si, composto in questo modo, un repository non diventerebbe troppo grosso?

Correggimi se erro.
Se io ho MIOPROGETTO-1 e MIOPROGETTO-2, ciò significa che ho due versioni del progetto, le cui funzionalità potrebbero variare. Se entrambe le versioni sono attive, come si fa a lavorare su trunk per entrambe? Oppure per

mavimo wrote:
Alle varie relase si fanno dei branch e vengono tenuti stabili questi, su cui vengono fatti i diversi bugfix.
intendevi che i bugfix li fai direttamente sul branch, per poi taggarlo come MIOPROGETTO-1.x++? Indi se è così - sempre correggimi se erro -, su trunk si lavora alla prima alpha di una nuova versione del progetto; giusto?

ziobudda wrote:
Ciao, visto che anche drupal.org si è spostato su git perché non Lo usi anche tu?

git è un altro server di versionamento?

Grazie

Felagund wrote:

ignoro feature/drush/drush-make :(

Male, MALISSIMO :)

Scherzi a parte, se hai un attimo di tempo guardateli, rivoluzionano il modulo di lavorare su progetti di una certa entità e con team distribuiti.

Felagund wrote:
su trunk avresti un'installazione compelta di drupal, dico il cms + eventuali sites/ (con moduli third e custom) + eventuali profiles, giusto? tutti lavorano là e committano quando dovrebbero farlo.
i file di configurazione, che si differenziano per host (alludo a settings.php, .htaccess, l'aggiunta di php.ini su aruba, config.php di FCKEditor), hanno le versioni base "vergini" fresche di installazione insieme a diverse copie file in base all'host di destinazione ipotizzato se queste esistono (ad esempio aruba.php.ini, aruba.htacces, aruba.settings.php) e, infine, le copie locali di ognuno per poter testare quanto fatto, magari dando a questi file i nomi corretti (per poter esser visti dal cms) e dando loro il comando svn:ignore, il tutto nella trunk. È corretto?

Felagund wrote:

I branch delle varie release contengono tutto il progetto, installazione compresa? Se si, composto in questo modo, un repository non diventerebbe troppo grosso?

Diciamo che il repository cresce, ma hai l'enorme vataggio di poter ripristinare tutto esattamente come era effettivamente, senza possibilità di dimenticarti dei pezzi, il che ti può salvare in certe situazioni. Tutto sta nel trovare quale sia per te il vantaggio maggiore.

Felagund wrote:

Correggimi se erro.
Se io ho MIOPROGETTO-1 e MIOPROGETTO-2, ciò significa che ho due versioni del progetto, le cui funzionalità potrebbero variare. Se entrambe le versioni sono attive, come si fa a lavorare su trunk per entrambe?

Esatto, non lavori sul branch una volta che hai devinito e ottenuto una milestone che ritieni sufficientemente stabile da poter essere separata dal trunk. Ovviamente non è bellissimo, perché comporta di lavorare parallelamente su due ambienti, ma permette di portare avanti funzionalità per le relase successive (sul trunk) con eventuali bugfix e stabilizzazioni che devono essere fatte sul ramo che stai per mettere in produzione (o che è già in produzione).

Felagund wrote:
Oppure per
mavimo wrote:
Alle varie relase si fanno dei branch e vengono tenuti stabili questi, su cui vengono fatti i diversi bugfix.
intendevi che i bugfix li fai direttamente sul branch, per poi taggarlo come MIOPROGETTO-1.x++? Indi se è così - sempre correggimi se erro -, su trunk si lavora alla prima alpha di una nuova versione del progetto; giusto?

Si, diciamo che grossomodo è così. Il problema diventa quando NON hai bene idea di cosa deve finire in ogni branch (che poi sono le diverse versioni del sito), mentre i tag più o meno sono le milestone che finiscono in produzione. Un enorme svantaggio è che ogni tanto devi fare i salti mortali per mergiare trunk e branch (per esempio quando risolvi un bug sul brunch in produzione poi devi portarlo anche sul trunk, dove magari altri hanno lavorato refattorizzando la funzionalità, quindi... :/

Felagund wrote:

ziobudda wrote:
Ciao, visto che anche drupal.org si è spostato su git perché non Lo usi anche tu?

git è un altro server di versionamento?

Si, GIT è un altro server di versionamento in cui cambia molto la logica, sono praticamente tutti branch, non esiste un trunk (ma esiste un branch master), con una serie di logiche di uso diverse (per cui probabilmente lo schema sopra indicato perde di significato).

@ziobudda: ci sono casi in cui non puoi scegliere il sistema di versioning, o non conviene cambiarlo (git ha una curva di apprendimento non banale, se tutti i dev conoscono SVN e il progetto è alle porte conviene usare quello :) )

Ciao
Marco
--
My blog
Working at @agavee

Ok, inteso ciò che hai scritto, ho però una domanda.

Sul trunk mergiamo un bugfix di un branch... Ma se sul trunk si sta lavorando per qualche altra funzionalità, o sulla funzionalità modificata da testa e piedi, il merge del branch magari più vecchio, non è un danno?

Non so se mi spiego...

Grazie.