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
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori 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
7 + 4 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.