Rispondi al commento

26 03.2009

Importazione di un progetto in svn

 

Riprendo dal post precedente guida_rapida_alla_configurazione_di_svn e illustro concisamente l'importazione di un progetto pre-esistente in un repository svn

 

 

Una volta creato un repository ad es.

svnadmin create /svn/hello_word

si possono effettuare un set di operazioni, come l'importazione di progetti esistenti, il checkout, il commit. In questo post mi occupo della importazione.

 

Struttura del repository

E' buona norma (o tradizione), ma non strettamente necessario, strutturare il repository con dei contenitori (rami) base:

    * branches/
    * tags/
    * trunk/

Trunk : è il ramo comunemente utilizzato per il codice corrente. E' il ramo di sviluppo ed è ciò che cercaranno gli sviluppatori abituati a svn.

Branches : il termine branch credo sia traducibile al meglio con il termine branca. In pratica è una derivazione del trunk o di un'altra branch che, dalla sua creazione in poi, vive vita propria che può diventare sostanzialmente diversa dalla copia originale. Un pò come due gemelle omozigote che a partire da un certo momento in poi si scelgono uno stile di vita proprio l'uno diverso dall'altro. Esistono poi dei meccanismi attraverso i quali due o più branches possono essere di nuovo fuse in un unico a ramo (a differenza delle gemelle omozigote [si spera]).

Tags : con tag si intende una copia (snapshot) del trunk o di un branch in un determinato momento. Per fare un esempio Hardy è un tag per il trunk di sviluppo di Ubuntu.

Come creare questa ripartizione? creo una directory temporanea contente le 3 subdirectory

mkdir -p /tmp/A/branches /tmp/A/tags /tmp/A/trunk

Supponendo di avere del codice gia pronto da importare nella dir code_directory, lo copio nella subdir trunk

cp -fR code_directory/* /tmp/A/trunk

il risultato:

tree -L 2 /tmp/A/

A/
|-- branches
|-- tags
`-- trunk
    |-- LICENCE.txt
    |-- applications
    |-- calendar.png
    |-- class.testwordcount.php
    |-- class.wordcount.php
    |-- config
    |-- controllers
    |-- extensions
    |-- images
    |-- index.php
    |-- locales
    |-- models
    |-- skeleton.tar.gz
    |-- testsuite.wordcount.php
    |-- tsmarty2c.php
    |-- uploads
    `-- views

 

Importazione / popolamento

Avendo la directory temporanea pronta e ben strutturata posso popolare il repository con del codice gia esiste che risiede nella directory /tmp/A

svn import /tmp/A file:///svn/hello_world/ -m "Initial Import @ 2009.03.26"

-m sta per "message" ovvero lo si usa per etichettare l'azione che viene compiuta su svn in modo che possa essere comprensibile a tutti gli utenti che hanno accesso al repository

A video si ottiene qualcosa del genere

[cut]
....
Adding         /tmp/A/trunk/controllers/.htaccess
Adding         /tmp/A/trunk/controllers/controller-index.php
Adding         /tmp/A/trunk/uploads
Adding         /tmp/A/trunk/uploads/.htaccess
Adding         /tmp/A/trunk/class.testwordcount.php
Adding         /tmp/A/trunk/class.wordcount.php
Adding         /tmp/A/trunk/tsmarty2c.php
Adding         /tmp/A/trunk/.settings
Adding         /tmp/A/trunk/.settings/org.eclipse.php.core.prefs
Adding         /tmp/A/trunk/.settings/org.eclipse.php.core.projectOptions.prefs
Adding         /tmp/A/branches
Adding         /tmp/A/tags

Committed revision 1.

Ogni riga rappresenta l'importazione del singolo file.

Al termine del processo il repository è popolato e ne posso navigare il contenuto in http://localhost/svn/hello_world

 

Rispondi

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Elementi HTML permessi: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.

Ulteriori informazioni sulle opzioni di formattazione

CAPTCHA
Questa domanda serve per verificare che tu sia un visitatore umano (non un computer) e per prevenire lo spam
Image CAPTCHA
Scrivi ció che vedi nella immagine.