All posts tagged Subversion

Captura-Version-Control-with-Git

A Serveis Informàtics Corretgé.com SLU, per tal de poder oferir un millor servei als nostres clients i que els nostres col·laboradors treballin més eficaçment, estem migrant els repositoris de control de versions Subversion a Git.

En aquesta taula trobarem una ‘equivalència’ de les comandes Subversion al Git.

Comandes Subversion al Git
Subversion Git
svnadmin create git init
svn checkout git clone
svn update git pull
svn add git add
svn commit git add
git commit
svn status git status
svn switch <branch> git checkout <branch>
svn merge <branch> git merge <branch>
svn revert <file> git checkout <file>
svn commit <remote> git push
git push origin master

La versió 1.5.1 del controlador de versions Subversion que va veure la llum a l’agost d’enguany, ja està disponible al repositori backport de la distribució Ubuntu Hardy 8.04.
Un dels motius per a fer el canvi és la incorporació ‘de sèrie’ de la connexió amb repositoris assegurats amb Secure Sockets Layer.

Com passa amb totes les versions x.1, és recomenable actualitzar-se.

Aquests repositoris backport duen forces novetats a costes de ser aplicacions no tant provades com els repositoris oficials i sense suport de l’equip de seguretat d’Ubuntu.

Per a activar aquest repositori editarem la configuració apt
sudo vi /etc/apt/sources.list
I descomentem esborrant la parrilla (#) a les línies deb que apuntin a aquest tipus de repositori
## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://ad.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://ad.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse

Actualitzarem la llista de paquets disponibles
sudo apt-get update
I instal·larem la versió 1.5.1 de Subversion fent
sudo apt-get upgrade subversion
Fent svn –version certificarem que estem actualitzats
svn --version
svn, version 1.5.1 (r32289)
compiled Oct 6 2008, 12:54:52

Copyright (C) 2000-2008 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme

Quan tenim una aplicació sota control de versions subversion, internament cada carpeta conté una altra anomenada .svn que conté informació per al Subversion.

Quan copiem uns arxius d’un lloc a un altre amb la comanda cp, aquesta informació també es copia, amb la informació del repositori d’origen.

Una manera de copiar tota la informació d’un projecte a un altre sense cap control de versions és amb la comanda rsync:
rsync -r --exclude=.svn /var/www/templates/crtSkel ./httpdocs
El que fem és copiar tot el que hi ha a la carpeta crtSkel que està sota control de versions a un httpdocs d’un nou projecte, que volem controlar-ho en un altre repositori.

Screenshot-Resource-zajaj-sample-zTest.class.php-Eclipse-Platform-

Per a integrar el control de versions Subversion a l’entorn de programació Eclipse instal·larem un plugin anomenat Subclipse.

Primer de tot ens assegurarem que a la màquina de desenvolupament tenim el subversion i les llibreries JavaHL instal·lades:
sudo apt-get install subversion libsvn-java libsvn-dev

Un cop instal·lades, obrirem Eclipse i al menú Help / Software Updates / Find and Install indicarem Search for new features to install.

Afegirem un nou lloc remot pitjant New Remote Site
Name Subclipse 1.4
URL http://subclipse.tigris.org/update_1.4.x

Seleccionem unicament aquest repositori i tirem endavant. Triarem tots els plugins que es puguin instal·lar, com a mínim:
Subclipse 1.4.3
Subversion Client Adapter 1.5.1
Subversion Native Library Adapter (JavaHL) 1.5.1.1
Subversion pure Java SVNKit

Quan ens demani de reiniciar l’Eclipse ho fem, i a tots els projectes que estiguin sota control de versió visualitzarem als seus arxius la data i persona que va fer la darrera modificació. Fent click al botó de la dreta del ratolí, sota el menú Team podrem remenar subversion.


Per a incloure un projecte des de zero farem:
File / New / Other / SVN / Checkout Projects from SVN

Create a repositorie location: http://zajaj.googlecode.com/svn/trunk/

Triem l’arrel com a Folder to be checked out i pitgem Finish.

Captura-Preferences

Per a completar el projecte de control de versions per a l’estació de treball Ubuntu, només caldrà indicar al Zend Studio que ha d’emprar una versió de Subversion que suporti SSL.

Anirem a Tools/Preferences/Source Control i indicarem la ruta per a subversion de la nostra distribució, generalment /usr/bin/svn:
I ja podrem fer servir el nostre IDE PHP preferit, el Zend Studio , amb control de versions sobre SSL :-)

Un cop tenim el repositori Subversion creat, necessitarem poder accedir-hi des de altres ordinadors. Hi ha tres maneres de fer-ho: svn, svn+ssh i Apache. Explicarem el modus https per emprar xifrat en la comunicació i no obrir la màquina amb comptes ssh.

Instal·larem els mòduls svn i dav de l’Apache
apt-get install subversion libapache2-svn libapache-mod-dav

Crearem una clau per a la comunicació SSL com s’indica en aquest post.

Procedirem a la creació d’un VirtualServer dedicat només als repositoris subversion, en el nostre cas pgmr0.corretge.ct en el domini intern de la companyia a /etc/apache2/sites-avalibe/pgmr0.corretge.ct
<VirtualHost *:443>

ServerAdmin info@corretge.cat
ServerName pgmr0.corretge.ct:443

SSLCertificateFile /etc/apache2/ssl/ss.pgmr0.corretge.cat.key
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/ssl/svn_usuaris.txt
Require valid-user
SSLRequireSSL
</Location>

</VirtualHost>

Per a l’autentificació bàsica d’Apache, seguirem les indicacions d’aquest post.

Habilitarem aquest servidor virtual creant un enllaç a /etc/apache2/sites-enabled
ln -s ../sites-available/pgmr0.corretge.cat 777-pgmr0.corretge.cat

I rebotarem l’Apache
/etc/init.d/apache2 restart

Ara ja només queda recuperar l’estructura actual sotra trunk al nostre directori de treball fent
svn co --username $USUARI_A_USUARIS_TXT https://pgmr0.corretge.ct/svn/nourepo/trunk nourepo

Més informació sobre les comandes Subversion les trobareu en aquest gran llibre:
Version Control with Subversion.

Amb aquest mini-HowTo explicarem com crear un repositori sotmés al control de versions de Subversion.
cd /var/svn
svnadmin create nourepo

I ara procedirem a crear una estructura bàsica segons els compendis actuals:
cd /tmp
svn co file:///var/svn/nourepo
cd nourepo
svn mkdir tags branches trunk
svn ci -m "Estructura inicial"

En cas de que s’hagi triat accedir-hi via Apache, el que farem primer de tot serà atorgar permisos al repositori creat:
chown -R www-data:www-data nourepo/
chmod g+rws nourepo/

I crearem l’estructura bàsica d’aquesta altra manera:
cd /tmp
svn co https://pgmr0.corretge.ct/svn/nourepo
cd nourepo
svn mkdir tags branches trunk
svn ci -m "Estructura inicial"