2011-01-13 18 views
8

Soy nuevo en SVN y hay algo en lo que estoy atascado. Durante mucho tiempo he estado desarrollando sitios web localmente (configuración de MAMP) y luego estoy trabajando en todo el sitio cuando está listo. Cualquier pequeño cambio adicional que realice directamente en el sitio en vivo y de vez en cuando volveré a descargar todos los archivos en el servidor en vivo a mi servidor local (ya que nunca puedo recordar todos los archivos que he cambiado). Obviamente, esta no es la mejor manera de hacer las cosas. Tenía curiosidad de cómo podía configurar SVN en un servidor web en vivo, por lo que cada cambio que realice localmente se insertará en el sitio web cuando se lo indique. ¿Dónde creo el svn repo? /dominio.com/www/svn? ¿Puedo crear el directorio www como el repositorio real y, de ser así, esta mala práctica?¿Cómo usar svn en un servidor apache activo?

+1

¿Su servidor web en vivo tiene conectividad con el servidor de Subversion? – jgifford25

Respuesta

7

¡No cree el repositorio en el directorio del servidor web! Esa es la primera parte de tu problema.

Su repositorio puede vivir en cualquier lugar, simplemente no lo coloque en el directorio del servidor web.

Al configurar servidor web Apache (si eso es lo que está utilizando), configurarlo para que ignore las carpetas .svn así:

<DirectoryMatch \.svn> 
    Order allow,deny 
    Deny from all 
</DirectoryMatch> 

Ahora, en otro lugar, aparte de su servidor web, crear una subversión repositorio. Pague desde ese repositorio en un directorio de trabajo en otro lugar que no esté en el directorio de su servidor web. Ahora puede importar todos los archivos que estarán en su repositorio aquí y enviarlos a su repositorio de Subversion.

Una vez que haya hecho eso, puede ir al directorio de su servidor web donde desea que aparezcan estos archivos, y hacer una compra.

usted debe tener tres cosas:

  1. Un repositorio de Subversion que es no en el directorio de su servidor web.
  2. Un directorio de trabajo que contiene todos sus archivos en su sitio web que es que no está en el directorio de su servidor web.
  3. Un directorio de trabajo que se encuentra en el directorio de su servidor web.

El plan es el siguiente: Realiza los cambios en el directorio de trabajo que no está en el directorio de su servidor web. Puedes hacer tus pruebas aquí y confirmar tus cambios aquí. También haces todas tus pruebas aquí también.

Una vez que esté satisfecho con todo, puede hacer un svn update en el directorio de trabajo de Subversion que se encuentra en el directorio de su servidor web. Entonces, usted hace su trabajo fuera del servidor web, prueba y luego hace un svn update en el directorio del servidor web.

Si quieres ser realmente elegante, puedes crear una rama web que represente el código en el directorio de tu servidor web. Luego, puedes verificar y codificar tu código todo lo que quieras. Cuando esté listo para implementarlo en su sitio web, puede fusionarlo en la rama web. Cuando actualice el directorio de trabajo en el directorio de su servidor web, solo extraerá el código en la rama web.

De hecho, podría automatizar ese proceso con algún tipo de cronjob. Baja su sitio web, actualiza el directorio de trabajo de subversión en el directorio de su servidor web y luego reinicia su sitio web. Esto asegura que los archivos que un usuario de la web está mirando no cambian desde debajo de ellos.

+0

Muchas gracias, creo que ha respondido a mi pregunta, pero aún tengo que investigar un poco más sobre svn para asegurarme de que lo entiendo. Se me ocurrió un diagrama rápido, ¿pueden verificar esto y ver si los entiendo correctamente? http://danramosd.com/svn_diagram.png – dan

+0

Lo siento, no vi el diagrama. Los dos primeros capítulos del [libro de Subversion] (http://svnbook.red-bean.com/en/1.5/index.html) explican cómo funciona todo. Es uno de los mejores manuales de código abierto que he visto en mi vida. Como Subversion es gratuita, descárgala y sigue los ejemplos del libro. Con en una semana, obtendrás una excelente idea de cómo funciona Subversion. Uso Git y Subversion para mis proyectos, pero prefiero Subversion por varias razones. –

+0

buen consejo para bloquear las carpetas .svn de las solicitudes http. –

1

lo haría configuración de una estructura en su svn checkout (en su caja local) que coincide con los archivos que necesita para almacenar (y no necesariamente coincide con la estructura del servidor), por ejemplo:

my-project 
my-project/docs/README.txt  (any documentation you want to write) 
my-project/www/index.html (etc) 

y pronto. Entonces,

(1) Si usted tiene acceso a la ejecución de comandos en el servidor, me gustaría iniciar sesión y hacer por ejemplo:

cd /domain.com 
rm -rf www 
svn co https://svn.myserver.com/my-project/www www 

(2) De lo contrario, me echa un vistazo a los archivos en el equipo local y ftp ellos a través del servidor.

La opción (1) es mejor, pero incluso con la opción (2) tiene ventajas sobre su configuración actual. Si cambia los archivos en el servidor, puede convertir todo el directorio en su carpeta local en un nuevo directorio y luego "enviar" los archivos al servidor de subversión. Subversion (con los directorios .svn, que necesita copiar desde/hacia el servidor) sabrá qué archivos ha cambiado.

Cuestiones relacionadas