Desarrollo & Ideas 18 de Agosto del 2007 01:22 am
Instalando SubVersion para control de versiones con VFP (parte 1)
Bueno, hasta hace poco yo estuve usando SourceGear para el control de versiones de mis proyectos, pero debido al problema por todos conocido que los formularios y clases se almacenan realmente en archivos DBF (el control de versiones los considera binarios) es prácticamente imposible que 2 personas trabajen en la misma forma/clase y luego unir los cambios en un solo archivo y que este sea un archivo válido para vfp.
Ahora debido al presupuesto, estoy utilizando el control de versiones SubVersion, pero lastimosamente no he encontrado casi ninguna buena documentación de uso en español, por no decir que no existe prácticamente nada en español que enseñe a implementarlo con VFP.
En este primer artículo, voy a mostrar como instalar SubVersion y también TortoiseSVN para empezar.
La mejor manera de instalar SVN, configurarlo como servicio, Crear un “Depósito” inicial (Repository) e instalar TortoiseSVN, es usando el instalador de http://svn1clicksetup.tigris.org/ ya que nos hará todo el trabajo.
Para los que quieran instalar por aparte todo, acá les dejo los links de descarga:
- SVN http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&expandFolder=91&folderID=74
- TortoiseSVN http://tortoisesvn.net/downloads
Debido a que el instalador svn1clickSetup no necesita mucha información intentare acá explicar los pasos necesarios para instalarlos por separado:
Una vez que tengamos el paquete denominado svn-X.X.X-setup.exe (en mi caso 1.4.4) procedemos a ejecutarlo y a seguir las instrucciones en pantalla. Debemos recordar donde lo instalamos en mi caso C:\Archivos de programa\SubVersion.
Instalamos TortoiseSVN, y reiniciamos la máquina en caso nos lo solicite.
Una vez que reiniciamos si es que lo pidió, abrimos una ventana del explorador de windows, y nos dirigimos a la unidad en que querramos mantener la Base de datos de SubVersion, por fácilidad yo prefiero ponerlo en el C: en la raíz, bajo el nombre de SVNCode (procuren no usar espacios en el nombre ni caracteres raros
), así que todo lo que hace falta hacer es crear dicho directorio para que quede así:
C:\SvnCode
Damos clic derecho sobre el folder y en la nueva opción que dice “TortoiseSvn” nos posicionamos para seleccionar en el submenú la opción “Create Repository Here…”

Luego nos preguntará, el tipo de base de datos que deséamos utilizar para el depósito, la recomendación general es que utilizemos el tipo Native Filesystem (FSFS):

Una vez que selecciones el tipo de datos a usar, damos clic a ok y nos avisará que el depósito fue creado exitósamente
a menos claro que no dispongamos de permisos sobre esa carpeta o espacio
(o que la carpeta no se encuentre vacía antes de crear el depósito allí).
Al exáminar la carpeta veremos que ha creado varias subcarpetas
- Dav
- Locks
- Conf
- Db
- Hooks
También un Readme.txt que conviene dejar allí, en caso que alguien más use esa computadora y quiera averiguar que es esa carpeta para evitar que la borre, también en la carpeta hooks, encontrará varios archivos .tmpl que quizá le guste revisar y leer al respecto cómo usarlos y configurarlos (estos pueden estar escritos en python o en perl)
El siguiente paso, será configurar nuestro depósito, abrimos la carpeta Conf y veremos 3 archivos:
- svnserve.conf
- passwd
- authz
Los 2 primeros archivos serán los únicos que necesitaremos configurar por el momento (a menos que quieran configurar apache y el módulo webdav, que escapa al objetivo de este artículo ya que no uso apache)
SvnServe.conf:
Debemos agregar 2 líneas, una para los usuarios que no inicien sesión anon-access) y otra para los usuarios que se auntentícaron (auth-access), el valor Default es darle lectura a los no autentícados y escritura para los otros, yo recomiendo no dar acceso a nada (none) para los no autentícados sí el acceso se hará atravéz de internet. por lo pronto vamos a agregar a nuestro archivo Svnserve.conf las 2 siguientes líneas, en el apartado [general] y antes de [sasl]:
anon-access = none auth-access = write
Passwd
Acá vamos a agregar tantas líneas como usuarios querramos que tengan acceso al depósito, en mi caso agregare 2:
dev1=pwd1630 dev2=1675Prq
Grabamos los cambios y nos toca decidir sí queremos que SubVersion este configurado como servicio, o por el contrario si lo que queremos es arrancar el programa cada vez que lo vayamos a necesitar (la máquina no solo sirve para desarrollo/servidor/o bien queremos tener control de cuando este disponible/etc).
En el caso que querramos controlar cuando arranca SubVersion lo mejor será usar un archivo.Bat con algo como esto:
cd "c:\archivos de programa\programacion\subversion\bin"
svnserve.exe --service -rC:\svncode
Recuerde que debe editar las rutas para que coincidan con su instalación y el depósito que creó con tortoisesvn. Cada vez que necesite iniciar SubVersion puede ejecutar ese archivo.bat.
Por el contrario, si lo que queremos es que este disponible al iniciar la máquina (aún cuando no hayamos iniciado sesión aún), debemos configurarlo como un servicio, así que arrancamos la consola de comandos (Inicio /Ejecutar / cmd.exe) y escribimos lo siguiente (todo en una línea)
sc create svn binpath= "\"c:\archivos de programa\Subversion\bin\svnserve.exe\" --service -rC:\svncode" displayname= "Servidor de SubVersion" depend= Tcpip start= auto
Deben tener en cuenta el espacio que se encuentra después de cada signo de igual (= ) ya que es obligatorio escribirlo así, también tengan en cuenta la ruta, quizá necesite ajustarla para que concuerde con su instalación o su depósito.
Sí todo ha ído bien nos deberá mostrar un texto como este
[SC] CreateService SUCCESS
Delo contrario nos dará un error informandonos de la sintáxis, tendremos que digitar de nuevo y poner atención a que quede igual al texto de arriba :).
Una vez que tengamos creado el servicio, debemos iniciarlo, desde la consola de comandos:
sc start svn
Que a su vez devolverá algo como esto:
SERVICE_NAME: svn
TYPE : 10 WIN32_OWN_PROCESS
STATE : 2 START_PENDING
(STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 3800
FLAGS :
Y bueno ya tenemos Svn configurado instalado, configurado como servicio, y un Depósito creado, listo para ser usado. Pronto la segunda parte del control de versiones en el que veremos como integrar nuestros proyectos.
Para los que desean tener SubVersion en un servidor pero no se animan a instalarlo sin probarlo antes, podrían probar esta máquina virtual con vmware que corre en un ubuntu. http://www.young-technologies.com/Software/Subversion-Virtual-Machine/ (en inglés), la ventaja de correrlo así es que podríamos migrar a un servidor posteriormente, y también el hecho de cargar el servicio solo cuando lo necesitemos en caso que solo sea 1 programador en el proyecto :).
Hasta la próxima.
Links: SubVersion (sitio oficial)
TortoiseSVN (sitio oficial)
Referencias: Setting up and running Subversion and Tortoise SVN
with Visual Studio and .NET
CVS, SubVersion and Visual FoxPro
on 18 Ago 2007 at 8:24 1.Allan
dijo …
Interesante post, muy bien explicado
Pero te falta algo muy importante, no todos usamos windows xDDDD y no todos usamos fox jajajajaja
Te falta una version de tu manual con linux y para usarlo con perl
Saludos Jorge, y espero la segunda parte
on 18 Ago 2007 at 8:41 2.Fernando
dijo …
Felicidades Mota muy buen post, muy bien explicado, no le hagas caso a allan alguna vez fue como vos pero comprendio que podia salirse del lado oscuro jejeje.
Saludos
on 18 Ago 2007 at 15:24 3.Jorge
dijo …
Para los que no usan windows, puse la versión de ubuntu http://www.young-technologies.com/Software/Subversion-Virtual-Machine/ pero claro como no leen XD
Saludos
on 18 Ago 2007 at 19:39 4.j_aroche
dijo …
TortoiseSVN, es uno de esos programas que extraño cuando estoy en Ubuntu…. pero ya me acostumbre un poco a la consola y a RapidSVN xD
on 19 Ago 2007 at 0:52 5.Jorge
dijo …
@J_Aroche:Pues mirá en linux no he usado nada de control de versiones, pero por lo pronto voy a probar la máquina virtual, rapidvsn corre en linux con algún ide en especial, o como va la cosa a ver si te dejas caer con algún link por acá al respecto