Actualiza tu theme de WordPress desde SVN

Si trabajas realizando proyectos en WordPress en el que el código se aloja en un servidor usando SVN, una forma sencilla de actualizar tu theme con los últimos cambios es mediante este sencillo y no-seguro plugin.

El plugin añade una opción de menú al Settings del Dashboard de WP, el cual te servirá para indicar el servidor SVN, usuario, contraseña y el path que corresponde a la carpeta themes de WP. El plugin se conectará al repositorio SVN y recuperará las carpetas que se encuentran en el path anterior y comprobará si las carpetas corresponden a themes instalados, mostrarás una lista con los themes encontrados junto a un botón que permite actualizar todo el theme.

Digo que no es seguro porque no controlo los permisos de los usuarios ni otras cuestiones, pero si estás interesado en ello supongo que no te costará mucho meterle mano al código:

// Adding Admin menu
if ( is_admin() ){
  add_action('admin_menu', 'svn_update_menu');
  add_action( 'admin_init', 'svn_update_register_settings' );

}

function svn_update_register_settings() {
  register_setting( 'svn_up_option-group', 'svn_username' );
  register_setting( 'svn_up_option-group', 'svn_password' );
  register_setting( 'svn_up_option-group', 'svn_repository' );
  register_setting( 'svn_up_option-group', 'svn_theme_path' );
  if ($_GET['page'] == 'svn-update/svn-update.php') {
    require ('phpsvnclient/phpsvnclient.php');
    $phpsvnclient = new phpsvnclient(get_option('svn_repository'), get_option('svn_username'), get_option('svn_password'));
    $files = $phpsvnclient->getDirectoryFiles('/');
    $svn_themes = array();

    $themes = array();

    foreach(get_themes() as $k=>$t) $themes[$t['Template']] = array($k, $t["Template Dir"]);

    if (is_array($files)) {
      foreach($files as $f) {
        if ($f['type'] == 'directory') {
          if (isset($themes[$f['path']])) $svn_themes[$f['path']] = $themes[$f['path']];
        }
      }
    }
    update_option('svn_themes', $svn_themes);
    if (isset($_GET['svn_update'])) {
      $path = $_GET['svn_update'];
      $theme_path = WP_CONTENT_DIR . '/themes/';
      $files = $phpsvnclient->getDirectoryFiles($path);
      foreach($files as $f) {
        if ($f['type'] == 'file') {
          file_put_contents($theme_path.$f['path'], $phpsvnclient->getFile($f['path']));
        }
      }
      add_action('admin_notices', 'showSVNUpdated');
    }
  }
}

function showSVNUpdated() {
  echo '

Theme updated

'; } function svn_update_menu() { add_options_page('SVN Update Options', 'SVN Update', 8, __FILE__, 'svn_update_options'); } function svn_update_options() { ?>

SVN Update Options

Username
Password
Repository
Theme path

Available Themes

No themes found in SVN repository instaled in WordPress

'; } else { echo '
    '; foreach($themes as $k=>$t) { echo '
  • /'.$k.' => '.$t[0].' Update
  • '; } echo '
'; } ?>

Este plugin necesita la librería PHP SVN Client para acceder al SVN, tan solo hay que meterlo en el mismo directorio que el plugin. Le faltan muchas cosas al plugin, pero ni tengo ganas ni tengo tiempo.

Groogle: revisor de código web

Groogle es una aplicación web que permite revisar código de varios lenguajes y que además se permite conectar con Subversion.

Entre las opciones que ofrece nos encontramos con:

  • Resaltar código de varios lenguajes
  • Comparación de ramas enteras del repositorio para encontrar ficheros y directorios añadidos, borrados o modificados.
  • Representación gráfica de ficheros
  • Notificaciones por email cuando el estado de una revisión cambia

Groogle

SupoSE: búsquedas en el repositorio de SVN

Subversion Repository Search Engine (SupoSE) es un buscador implementado en Java que nos permite encontrar contenido dentro de nuestro repositorio SVN. Indexa todos los ficheros (menos los binarios) y ayuda a encontrar lo que quieres en todos los ficheros de texto, como por ejemplo los scripts de nuestras aplicaciones, en documentos OpenOffice…
No me queda muy claro si permite indexar ficheros Word, Excel y parecidos y si admite buscar en el historial del repositorio, en la página no lo indican muy bien.
SupoSE
Sea como fuera, es una buena herramienta a tener en cuenta.

Guía inicial al uso de un control de versiones

Aunque a mí me sorprenda, hay gente que cuando desarrolla un proyecto, ya sea profesional o personalmente, no utiliza un software de gestión de versiones.
En el artículo que os presento, nos comentan las ventajas que tendremos cuando usamos un gestor de versiones, sobre todo si se trata de un proyecto con varios desarrolladores.
Nos recomienda el uso de Subversion (SVN) y las aplicaciones para escritorio TortoiseSVN para Windows y SCPlugin para Mac. Aunque prefiero SVN a CVS, y sobre todo a SourceSafe u otros peores, la verdad es que algún problema da, sobre todo a la hora hacer commit cuando ha habido commits de otros usuarios anteriormente.
Además nos ofrece una explicación, incluso mediante explicación gráfica del funcionamiento de SVN. Algo importante también es la diferencia entre export y checkout, aunque dependiendo del programa, puede llamarse update y commit o checkin y checkout (cuando se trata de estos términos los no controlamos el inglés, nos liamos un poco).
Una lectura muy importante para aquellos no iniciados.
What is Source Control and Why Should I Use It?

Recursos para Subversion

SVN es un sistema de gestión de versiones que quiere reemplazar al conocido CVS, para aquellos que quieran aprender sobre esta aplicación, os pasamos una serie de recursos que esperemos sean de utilidad.

Documentación

Clientes

Librerías

Utilidades

  • Subclipse (plugin para Eclipse)
  • AnkhSVN (plugin para Microsoft Visual Studio .NET)
  • JDeveloper (plugin para JDeveloper)
  • WLW-SVN (plugin para WebLogic)
  • cvs2svn (convierte CVS a SVN)
  • Tailor (migra distintos tipos de aplicaciones de versionado)
  • vss2svn (convierte Microsoft Visual Source Safe (VSS) a Subversion)
  • SVN Importer (importa desde otro control de versiones a SVN)
  • Subversive (plugin para Eclipse, gracias Jordi)