2011-09-29 25 views
6

Soy nuevo en SVN y quiero ignorar un directorio recursivamente, como en Git. Tengo un directorio, sample, que quiero ignorar recursivamente.¿SVN Global ignore recursivo?

>svn status 
sample/first/1.jpg 
sample/second/2.jpg 
sample/third/3.jpg 

que he intentado:

  1. svn ps svn:ignore "*" . (bajo el directorio sample)
  2. Configuración ignora globales en ~/.subversion/config como global-ignores = sample.

Pero aún así se muestra el mismo resultado cuando corro svn status:

>svn status 
sample/first/1.jpg 
sample/second/2.jpg 
sample/third/3.jpg 

¿Cómo puedo ignorar de forma recursiva un directorio en el SVN?

Respuesta

4

Si desea ignorar el directorio samples y todo el contenido dentro, debe establecer svn:ignore en el directorio que contiene el directorio samples. Lo hiciste dentro del propio samples. Tenga en cuenta dos cosas:

  1. svn:ignore afecta solo a los archivos de reversión. Esto significa que todavía se mostrarán los archivos y directorios que ya conoce SVN.

  2. svn:ignore las configuraciones no son acumulativas o recursivas. Si desea ignorar solo los archivos * .jpg en su árbol, debe establecer svn:ignore en *.jpg en cada directorio.

Tenga en cuenta que el comando svn propset tiene una opción -R (aka. Recursiva), que fuerza ayuda. Pero tenga en cuenta que propset no es propadd. Por supuesto, esto es solo una preocupación si desea establecer diferentes valores en el árbol.

7

svn -R propset svn:ignore . -F somefile.txt

Dónde Unarchivo.txt es un archivo que contiene toda la SVN patrones de ignorar que desea que se establezca de forma recursiva.

+0

gracias. Salvaste mi día. – itsaboutcode

+0

Acabo de ejecutar 'svn -R propset svn: ignorar -F. \ IgnorePatterns.txt' y recibí el siguiente error:' svn: E205001: argumento de objetivo explícito requerido' –

+1

@ShaunLuttin En mi ejemplo, el svn: ignorar se hace en el directorio de trabajo actual '.' (no tiene comillas en mi ejemplo). En su ejemplo, omitió el directorio y movió el punto para hacer una ruta relativa de un archivo '. \ IgnorePatterns.txt'. No puede comprometer un conjunto de propiedades contra _nothing_, ya que SVN se basa en un sistema de archivos virtual. Debe comprometer las propiedades con un directorio o archivo. –

1

De http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.advanced.props.special.ignore:

"Los patrones que se encuentran en el svn: ignore aplican solamente al directorio en el que se establece que la propiedad, y no a cualquiera de sus subdirectorios."

[...]

"Una vez que un objeto se encuentra bajo control de Subversion, el ignorar los mecanismos de patrones ya no se aplican a la misma. En otras palabras, no espere que Subversion para evitar cometer los cambios que ha realizado en un archivo versionado simplemente porque el nombre de ese archivo coincide con un patrón de ignorar: Subversion siempre nota todos sus objetos versionados ".

Puede utilizar el distintivo -R pero eso solo aplica la propiedad recursivamente, no cambia el efecto de las propiedades, por lo que no se aplicará a ningún nuevo directorio creado.

También sugiero usar propedit en lugar de ps ya que permite editar mulitline, de lo contrario es complicado tratar con más de un patrón de ignorar.

0

Para aquellos en * nix:

Aunque la documentación, que ~.subversion/config ya debería tener la configuración por defecto en ella, la mía (SVN 1.6.17 en Ubuntu) estaba vacío.

Aquí es el formato fin llegué a trabajar (esto es todo el archivo), incluye la configuración predeterminada y He añadido * .ignore en el final:

[Miscellany] 
global-ignores=*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.ignore 
1

Hay una nueva propiedad a SVN haz esto desde SVN 1.8 en adelante. Ver la parte inferior de this page from the SVN book:

svn:global-ignores 

Se aplica a la carpeta que le prendieron y todo debajo, y que no es necesario especificar recursiva. Por ejemplo, para establecer en el directorio actual:

svn propset svn:global-ignores "bin obj" .