Mutare subversion repository de pe Windows pe Linux & hooks
Trebuie să recunosc, ca și dacă sunt plătit bine, încerc să refuz să folosesc soluții Microsoft, servere Windows. De aceea am purces la a transfera datele și serviciile de pe un Windows 2003 server, care era folosit ca și development and testing server de o echipa de programagori, pe un CentOS 5. Bazele de date mysql și configurarile de apache au fost simplu de mutat.
M-am gândit să detaliez mutarea repository-urilor de subversion, care am crezut că îmi vor da bătaie de cap, poate va fi de folos cuiva.Pașii sunt simpli:
1. Exportarea repository-ului din Windows. Presupunând ca avem repository-urile în D:\svn, comanda pentru export va fi: svnadmin dump d:\svn\nume_repository > nume_repository.dump
2. Copierea fișierului de dump pe serverul de linux, prin orice metoda preferata: ftp, smb, etc.
3. Pe linux, vă asigurați ca este instalat pachetul de subversion (eu am folosit yum install subversion). Am ales pentru moment să folosesc svnserve ca și standalone daemon process. Pentru a porni serverul de svn comanda este: svnserve -d -r /home/svn. Unde /home/svn este locația pentru repository-urile din linux.
4. Crearea repository-ului pe linux cu comanda: snvadmin create /home/svn/nume_repository
5. Încărcarea repository-ului pe linux din fișierul exportat și copiat de pe windows, folosind comanda: svnadmin load /home/svn/nume_repository <> nume_repository.dump
Hooks
Pe Windows, o versiune a proiectului din svn, era actualizată la fiecare commit care se făcea, prin utilizarea hooks. Acest lucru era foarte util pentru a putea avea o versiune actualizată spre a fi servită de apache, pentru testing.
În linux, am rezolvat acest lucru in felul urmator:
1. În directorul /home/svn/nume_repository/hooks am creat un fișier update-dev.c cu urmatorul continut:
#include
int main(int argc, const char *argv[])
{
system(”/usr/bin/svn update /var/www/nume_repository”);
}
unde, /var/www/nume_repository e directorul unde se face inițial un svn checkout, și care este servit de apache.
2. Se compileaza fișierul:
#gcc update-dev.c -o update-dev
#chown root:root update-dev
#chmod +s update-dev - adaugam bitul pentru setuid la drepturile executabilul update-dev, pentru a putea fi executat cu drepturi de root.
3. Se creează fișierul post-commit în directorul: /home/svn/nume_repository/hooks în care adaugam urmatoarea linie:
/home/svn/nume_repository/hooks/update-dev
Filosofia e simpla. Atunci când un utilizator va da commit la proiect, fișierul post-commit va executa micul programel update-dev, care la rândul lui va face un svn update în directorul din webserver, servit de apache, și astfel se vor putea testa modificarile.
The article has
no responses yet