2008-09-22 9 views
10

Siempre he descargado archivos desde sitios, los he editado y los he copiado de nuevo al crear sitios, pero creo que vale la pena aprender a hacer las cosas correctamente.¿Cuál es la mejor manera de usar SVN para controlar la versión de un sitio PHP?

Acabo de comprometer todo para un repositorio SVN, y he intentado entrar al servidor y verificar una compilación etiquetada, así como también actualizar esa compilación utilizando el modificador.

Todo bien, pero es mucho más lento que mi proceso actual.

¿Cuál es la mejor manera de establecer algo así? La mayor parte de mi tiempo son solo correcciones de errores o pequeños cambios en lugar de grandes reescrituras, así que estoy actualizando cosas con frecuencia.

+1

Sus preguntas como estas me hacen amar este sitio. Tuve exactamente la misma pregunta y Google me encontró la respuesta en mi sitio favorito :) –

Respuesta

7

No necesita necesariamente utilizar SVN para implementar los archivos en el servidor. Sigue usando FTP para eso y simplemente usa SVN para el historial de revisiones.

+0

No, esta es una mala idea. Su implementación debe ser de 1 clic; con solo FTP, no tendrá la configuración back-end de la base de datos. –

+0

Para trabajos de consultoría, esta es una solución perfectamente aceptable. –

2

Para actualizaciones rápidas, simplemente ejecuto svn update desde el servidor.

A veces, para actualizaciones realmente muy rápidas Edito los archivos usando vim y los envío desde el servidor.

No es muy apropiado, pero rápido y bastante confiable.

1

Si desea hacer esto correctamente, debe considerar la configuración de un repositorio SVN local. También recomendaría encarecidamente configurar un servidor de integración continua (CI) como el control de crucero, que automáticamente ejecutará cualquier prueba en contra de su código PHP cada vez que ingrese a svn. Su servidor de CI también podría usarse para publicar sus archivos a través de FTP a su host con tan solo hacer clic en un botón, una vez que haya pasado las pruebas.

Aunque esto suena como un montón de trabajo, realmente no lo es y los beneficios de un proceso de implementación sin problemas se pagarán más que a la larga.

1

Para mis proyectos, generalmente tengo un repositorio. En mi computadora portátil hay una copia de trabajo, y el sitio web en vivo es una copia de trabajo. Realizo mis cambios en la copia local, usando mi servidor web local. Cuando todo se prueba y está listo para comenzar, confirmo los cambios, luego me conecto al servidor remoto y svn update.

También guardo una carpeta en este repositorio que contiene archivos sql de cualquier cambio que haya realizado en la estructura de la base de datos, etiquetados de acuerdo con su número de revisión. Por ejemplo, cuando ejecuto la Revisión 74 y tiene un par de columnas adicionales en una de las tablas, se incluirán dbupdates/rev74.sql en la confirmación. De esa manera, después de hacer mi actualización de svn, todo lo que tengo que hacer es ejecutar mi archivo sql (mysql nombre_bd -p -u nombre de usuario < dbupdates/rev74.sql) y estoy listo para continuar.

0

Lo que hago en el trabajo, es usar FTP para cargar cambios en un servidor de prueba. Luego, cuando termine con la sección del sitio en el que estaba trabajando, confirmo los cambios y actualizo ambos. A veces, si estoy trabajando en algo y cambio muchos archivos en directorios diferentes, lo confirmo y actualizo el servidor de prueba. Pero no actualizo el servidor de producción. Pero yo soy el único programador aquí, no recomendaría cometer un código posiblemente defectuoso si hay más de un programador.

1

Si desea obtener un funky real con él, puede usar un script de compilación para obtener la versión actual de SVN, luego compile su código PHP, luego en una compilación exitosa, aplique automáticamente los cambios a su servidor.

Esto ayudará en la depuración y puede hacer que su código se ejecute más rápido.Además, entrar en el hábito de compilación realmente ha mejorado mi codificación sobre simplemente empujar el PHP directamente al servidor y depurarlo a través de Firefox.

+0

Me pregunto quién dijo algo sobre "compilar php" ?? – Qchmqs

+0

@Qchmqs nadie lo hizo. Pero agregar un paso de compilación le brinda la oportunidad de realizar pruebas automáticas y detectar errores antes de enviarlo a un servidor. –

+0

todavía no lo entiendo, ¿por qué quieres compilar php? – Qchmqs

1

Los beneficios del control de origen se revelan a medida que aumentan la complejidad del proyecto y el número de desarrolladores. Si trabaja directamente en un servidor remoto y solo realiza parches rápidos la mayor parte del tiempo, es posible que el control de la fuente no valga la pena.

Preferiblemente, debe trabajar desde una copia de trabajo local del repositorio (lo que significa que también debe configurar un servidor local). Trabajar contra un servidor remoto usando SVN como el único medio para actualizarlo lo haría más lento considerablemente. Habiendo dicho eso, trabajar con SVN (o cualquier otro control de fuente) arrojará muchos beneficios a largo plazo: usted tiene un historial completo de cambios, siempre puede estar seguro de que el servidor está actualizado (si ejecutó la actualización)) y si agrega más desarrolladores al proyecto, puede evitar costosas sobreescrituras de fuentes entre sí.

0

Uso ZendStudio para Eclipse (actualmente versión 6.1). Y utilizo SVN para mantener mis códigos fuente disponibles. Inicialmente pensé que el proceso era algo lento debido al proceso de confirmación (y al ingresar el comentario de confirmación) y esperé hasta que se detuviera.

Sin embargo, después de saber que Ctrl + Alt + C para confirmar y marcar 'Ejecutar siempre en segundo plano', el proceso no se ralentiza en absoluto.

Además, ejecuto todo localmente, y luego solo SSH después de un tiempo.

2

Debe consultar la instalación de rsync para cargar los cambios en su servidor.

Rsync es excelente porque compara su copia local del repositorio con la copia que está actualmente en el servidor y luego solo envía los archivos que han cambiado.

Esto le ahorra tener que recordar cada archivo que ha cambiado y seleccionarlos manualmente en FTP, o tener que cargar toda la copia local al servidor nuevamente (y dejar FTP para hacer las comparaciones).

Rsync también le permite excluir archivos/carpetas (es decir, .svn/carpetas) al sincronizar entre sus servidores.

0

Hice un enganche post-commit para actualizar automáticamente mi web. Es rápido pero puedes cometer errores.

2

Te recomiendo que sigas usando Subversion para rastrear todos los cambios, incluso las correcciones de errores. Cuando desee implementar en su servidor de producción, debe usar SSH y llamar al svn update. Este proceso se puede automatizar usando Capistrano, lo que significa que puede sentarse en su casilla local y llamar al cap deploy - Capistrano enviará SSH a su servidor y realizará la actualización de Subversion. Ahorra mucho trabajo manual tedioso.

0

SI en el servidor * nix Y tiene el acceso SSH apropiado Y tiene espacio para mantener múltiples copias de la página web, ENTONCES la técnica de control de versiones más útil que he encontrado es utilizar un enlace simbólico para apuntar a la versión "actual" del sitio web. (Puede seguir utilizando SVN al código fuente de la versión - esta es una manera de/fácil cambiar instantáneamente entre las versiones de la página web en el servidor.)

  1. Configurar el servidor web para que apunte a /whatever.com como la raíz del sitio web.

  2. tener una carpeta como/web/r1v00 a la que FTP los archivos del sitio web, a continuación, crear un enlace simbólico llamado "whatever.com" que apunta a/web/r1v00

  3. Cuando se tiene una versión actualizada de el sitio web, cree otra carpeta llamada/website/r1v001, FTP todos los archivos para el sitio actualizado, luego cambie el enlace simbólico para "whatever.com" para ahora apuntar a/website/r1v01. Si hay algún problema con el nuevo sitio, puede realizar copias a cabo al instante, simplemente apuntando el enlace simbólico "whatever.com" de nuevo a/web/r1v00

Por supuesto, se puede/debe configurar scripts a automatizar la creación y el cambio del enlace simbólico. En mi caso, tengo una página de "administrador" escrita en PHP que enumera todas las versiones disponibles y me permite cambiar a cualquiera de ellas. ¡Esta técnica ha salvado mi tocino varias veces ...!

Obviamente, esto no soluciona ningún problema con los esquemas de bases de datos de versiones o el contenido de la base de datos.

+0

Esto no es una solución elegante, es toda la fuerza bruta = / – qodeninja

Cuestiones relacionadas