2012-07-12 25 views
5

Agrego algunos cambios a mi repositorio local y ejecuto svn diff, pero la salida diff está vacía. Pero svn status marcó mis archivos como modificados. Esto es archivos es elementos externos, ¿cómo puedo usar el comando diff con esto?svn diff no muestra archivos externos modificados

Respuesta

3

Aquí es una cita de the manual:

Además de la caja SVN, svn update, SVN interruptor y svn export comandos que en realidad gestionar el disjuntos subdirectorios (o desconectado) en el que se comprueban las externalidades, el comando svn status también reconoce las definiciones externas. Muestra un código de estado de X para los subdirectorios externos disjuntos, y luego recurre a esos subdirectorios para mostrar el estado de los elementos externos. Puede pasar la opción --ignore-externals a cualquiera de estos subcomandos para deshabilitar el procesamiento de definición externa.

Se puede deducir de lo anterior que solo los comandos mencionados son compatibles con los externos.

No sé por qué es así, pero mi corazonada es que fue relativamente difícil de diseñar correctamente y no ocupaba un lugar destacado en la lista de características.

1

Tendrá que usar un programa externo para hacerlo. Escribí este guión que parece hacer bien el trabajo.

<?php 
passthru('svn diff'); 
exec('svn propget svn:externals',$externals); 
foreach($externals as $line) { 
    list($local, $path) = explode(' ',$line); 
    passthru('svn diff '.$local); 
} 
?> 
1

Esto es lógico, ya que la razón es que el estado SVN muestra el estado con respecto a la última revisión del tronco. significa que su local no está actualizado a la última revisión en el tronco. Al tomar la información de SVN que se vería que el

Path: /home/.... 
Working Copy Root Path: /home/trunk 
URL: https://svn.***.**/trunk 
Repository Root: https://svn.***.**/ 
Repository UUID: 
Revision: **LAST_UPDATED_REVISION_Nr** 

Sin embargo, el diff SVN muestra la diferencia entre el archivo local y la situación archivo en su LAST_UPDATED_REVISION_Nr. Con el fin de ver la diferencia con respecto a la última revisión en el tronco:

svn diff -rHEAD address_of_your_file 
1

Puede utilizar esta carcasa de una sola línea:

svn st -q | grep '^[AM]' | cut -c9- | xargs svn diff 

Explicación:

  1. svn st -q toma la salida del estado de SVN sin líneas adicionales ("silencioso").
  2. grep '^[AM]' filtros añadidos y modificados.
  3. cut -c9- corta los metadatos y pasa los caminos aún más.
  4. xargs svn diff ejecuta svn diff para cada archivo.
Cuestiones relacionadas