tutorial subversion repositorio reconoce linea interno externo español conectar como comandos comando svn

subversion - svn terminal



Comando de revisión actual de Subversion (9)

¿Hay un comando Subversion para mostrar el número de revisión actual?

Después de svn checkout , quiero iniciar un script y necesito el número de revisión en una variable. Sería genial si hay un comando como svn info get_revision_number .


  1. En primer lugar, el estado svn tiene el número de revisión, puedes leerlo desde allí.

  2. Además, cada archivo que almacene en SVN puede almacenar el número de revisión en sí mismo: agregue la palabra clave $Rev$ a su archivo y ejecute propset: svn propset svn:keywords "Revision" file

  3. Finalmente, el número de revisión también está en el archivo .svn/entries , cuarta línea

Ahora, cada vez que finalice la compra de ese archivo, tendrá la revisión en sí misma.


Acabo de usar la respuesta de @ badcat en una versión modificada, usando subprocess.check_output() :

import subprocess revision = subprocess.check_output("svn info | awk ''/^Revision:/ {print $2}''", shell=True).strip()

Creo que también puedes instalar y usar pysvn si quieres usar python para interactuar con svn.


Creo que tengo que hacer svn info y luego recuperar el número con una manipulación de cadena de "Revisión: xxxxxx" Sería bueno, si hubiera un comando que devuelva solo el número :)


Las versiones más nuevas de svn admiten el argumento --show-item :

svn info --show-item revision

Para el número de revisión de su copia de trabajo local, use:

svn info --show-item last-changed-revision

Puede usar os.system() para ejecutar una línea de comando como esta:

svn info | grep "Revision" | awk ''{print $2}''

Lo hago en mis scripts de compilación nocturna.

También en algunas plataformas hay un comando svnversion , pero creo que tenía una razón para no usarlo. Ahh, cierto. No puede obtener el número de revisión de un repositorio remoto para compararlo con el local utilizando svnversión.


Nadie menciona para Windows World SubWCRev , que, utilizado correctamente, puede sustituir los datos necesarios en los lugares necesarios automágicamente, si el script llama a SubWCRev en el formulario SubWCRev WC_PATH TPL-FILE READY-FILE

Muestra de mi gancho post-commit (parte de)

SubWCRev.exe CustomLocations Builder.tpl z:/Builder.bat ... call z:/Builder.bat

donde mi Builder.tpl es

svn.exe export trunk z:/trunk$WCDATE=%Y%m%d$-r$WCREV$

como resultado, tengo cada vez un archivo bat con una parte variable - nombre de dir - que corresponde a los metadatos de la Copia de Trabajo


REV = svn info svn://svn.code.sf.net/p/retroshare/code/trunk | grep ''Revision:'' | cut -d/ -f2 svn info svn://svn.code.sf.net/p/retroshare/code/trunk | grep ''Revision:'' | cut -d/ -f2


También hay un comando más conveniente (para algunos) svnversion .

La salida puede ser un número de revisión único o algo así (desde -h):

4123:4168 mixed revision working copy 4168M modified working copy 4123S switched working copy 4123:4168MS mixed revision, modified, switched working copy

Utilizo este fragmento de código python para extraer información de revisión:

import re import subprocess p = subprocess.Popen(["svnversion"], stdout = subprocess.PIPE, stderr = subprocess.PIPE) p.wait() m = re.match(r''(|/d+M?S?):?(/d+)(M?)S?'', p.stdout.read()) rev = int(m.group(2)) if m.group(3) == ''M'': rev += 1


Use algo como lo siguiente, aprovechando la salida XML de subversión:

# parse rev from popen "svn info --xml" dom = xml.dom.minidom.parse(os.popen(''svn info --xml'')) entry = dom.getElementsByTagName(''entry'')[0] revision = entry.getAttribute(''revision'')

Tenga en cuenta también que, dependiendo de para qué necesite esto, la entrada <commit revision=...> puede ser más de lo que está buscando. Eso da la "última modificación modificada", que no cambiará hasta que el código en el árbol actual realmente cambie, en lugar de "revisión" (lo que se indica arriba) que cambiará cada vez que cambie cualquier cosa en el repositorio (incluso ramas) y haces un "svn up", que no es lo mismo, ni a menudo tan útil.


svn info , creo, es lo que quieres.

Si solo deseara la revisión, tal vez podría hacer algo como:

svn info | grep "Revision:"