2010-08-09 21 views
5

Trabajo con otro desarrollador en la misma copia de trabajo (sé que es una mala idea), generalmente actualizamos archivos individuales, y ahora tenemos archivos en una revisión y otros en otra. ¿Cómo puedo ver una lista de archivos con sus respectivos números de revisión? (La copia de trabajo está en una máquina Linux, y estamos usando la línea de comandos SVN.¿Cómo puedo ver el número de revisión de cada archivo en una copia de trabajo SVN?

Gracias de antemano por cualquier ayuda

+3

lo siento por hacer esto, pero no puedo dejar de preguntar:? __Si sabes que es una mala idea, ¿por qué haces esto __ – sbi

+0

El problema se produce en una copia de trabajo que es la carpeta de producción donde Apache carreras. A veces, cuando necesitamos resolver un error rápidamente, usamos directamente esa copia de trabajo. – Castro

+2

Esta es una idea terrible. Es tan probable que cree problemas rápidamente como usted para solucionarlos rápidamente. – thekbb

Respuesta

0

Finalmente utilicé la solución combinada usando el comando publicado por Dmitry Yudakov y un pequeño script en js-rhino. Ahora puedo encontrar todos los archivos con un número de revisión diferente de hacer algo como:

svn info -R> tmp_info rinoceronte lecturas en svn.js | grep -v 295

/* The script */ 
lines = readFile("tmp_info").split("\n"); 
lines.pop(); 
String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g,""); 
} 
var idx = 0; 
var files = []; 
files[0] = {}; 
var line; 
for (i in lines) { 
    line = lines[i].toString(); 
    if(line.length) { 
    key = line.split(':')[0]; 
    if(key == 'Name' || key == 'Revision' || key == 'Path') 
     files[idx][key] = line.split(':')[1]; 
    } else { 
    idx++; 
    files[idx] = {}; 
    } 
} 

print('files : ' + files.length + "\n"); 
for (i = 0; i< files.length ; i++) { 
    var file = files[i]; 
    if(typeof(file.Name) !== "undefined") 
    print(" REVISION: " + file.Revision.trim() + ' - ' + file.Path.trim() +'/' + file.Name.trim()); 
} 
6

probar este en su copia de trabajo

svn info * 

o

svn info -R * 

para ver todos los archivos y directorios de forma recursiva

Puede escribir svn help info para ver otras opciones

+0

Sí, pero busco las versiones de todos los subdirectorios y archivos recursivamente. Eso solo me muestra las versiones de los archivos en el directorio padre. – Castro

+0

bien, ver mi edición –

1

El comando svnversion puede ser lo que necesita, ya que mostrará el rango de revisiones en la copia de trabajo.

+0

@JonathonReinhart - esta publicación indica una respuesta. Aunque también contiene un enlace, el enlace no es necesario para que la respuesta sea válida. El enigma clave aquí es saber qué comando usar, y esto proporciona esa información de manera independiente. –

+0

@ChrisStratton De acuerdo. Estaba un poco demasiado celoso en la crítica. –

0

mismo programa en php:

svn info -R> tmp_info & & php versions.php

<?php 
$lines = explode("\n",file_get_contents("tmp_info")); 
array_pop($lines); 

$idx = 0; 
$files = array(); 
$files[] = array(); 

foreach($lines as $i => $line) { 
    if(!empty($line)) { 
    $spl = explode(':',$line); 
    $key = $spl[0]; 
    if($key == 'Name' || $key == 'Revision' || $key == 'Path') 
     $files[$idx][$key] = $spl[1]; 
    } else { 
    $idx++; 
    $files[$idx] = array(); 
    } 
} 


echo 'files : ' . count($files) . "\n"; 
foreach($files as $file) { 
    if(isset($file["Name"])) 
    echo " REVISION: " . trim($file["Revision"]) . ' - ' . trim($file["Path"]) .'/' . trim($file["Name"]) . "\n"; 
} 
2

svn info -R . | egrep "^Path:|^Revision:" | paste - -

Lo que significa

  • recursivamente obtener información de cada archivo en el subárbol con raíz en el directorio actual
  • Mantener sólo las líneas que comienzan con "Path:" o "Revisión:"
  • Únete las líneas de trayectoria/revisión sobre una sola línea

produce una salida como esta:

Path: Tools/xmlvalidator Revision: 69114 
Path: Tools/xmlvalidator/main.c Revision: 69114 
Cuestiones relacionadas