2008-10-19 13 views
71

A veces estás desarrollando y decides comprometerte, olvidando que has creado algunos archivos en tu proyecto. Luego, unos días después, su amigo obtiene su compilación de Subversion y se queja de que algunos archivos parecen estar ausentes. Te das cuenta, ah mierda, me olvidé de agregar esos archivos!¿Cómo obtengo una lista de todos los archivos no versionados de SVN?

¿Cómo puedo obtener una lista de los archivos que no están bajo el control de la versión de Subversion, así que estoy seguro de que he agregado todo al repositorio?

Respuesta

94

utilizar el comando svn status:

svn status | grep ^? 

Los archivos que no están versionados están indicados con un? al comienzo de la línea.

Si encuentra que siempre tiene algunos archivos específicos que no deberían agregarse al repositorio (por ejemplo, los binarios generados), debe configurar la propiedad svn:ignore en el directorio contenedor para que estos archivos no sigan apareciendo cuando se usa svn status.

+3

lo personal, siempre "svn diff" antes "svn ci", pero ya que es lento a veces, siempre "stat SVN" antes "svn diff", que es útil porque entonces no me olvido de agregar cosas :) – ephemient

+9

Si tiene muchos archivos no versionados que desea agregar, haga esto: 'svn st | grep ^? | awk '{print $ 2} | xargs svn add' Esto primero encontrará archivos no versionados, awk solo imprimirá el segundo elemento en la línea (es decir, la ruta del archivo) y xargs convertirá esta ruta en un argumento de svn add. –

+6

Falta una comilla simple al final del comando awk. El comando debería ser: 'svn st | grep ^? | awk '{print $ 2}' | xargs svn add' – jplandrain

15

Si está ejecutando en Windows, podría hacer algo similar a la respuesta de Greg Hewgill usando PowerShell.

(svn stat) -match '^\?' 

Esto puede extenderse con bastante facilidad para encontrar todos los archivos sin versión e ignorados y eliminarlos.

(svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm 

Espero que sea útil para alguien!

+1

¿Cómo se llama este'() -math'? –

36

Si se ha agregado 'ignorar' a algunos archivos a su estado, no aparecerán en 'estado svn'. Necesitará:

svn status --no-ignore 
+0

También es útil para archivos binarios que en mi configuración parecen ser ignorados por el estado de svn por defecto. Probablemente no conozca alguna configuración que haga esto, pero usar --no-ignorar me ha ayudado en este escenario. –

9

o desde la línea de comandos de Windows:

svn stat | find "?" 
0

Puede utilizar este comando para listar todos los caminos para archivos no versionados-:

svn status | awk '/^?/ {print $2}' 

La primera parte hará un svn status, y luego redirigirá la salida a AWK que hará filtro simple "el primer carácter debería ser '?'" luego imprimirá el segundo parámetro "que es la ruta del archivo" .

svn status siempre no imprime archivos ignorados. Puede añadir un archivo o la ruta añadiendo el recorrido en el

svn propset svn:ignore "PATH OR PATERN" 
Cuestiones relacionadas