Pregunta

¿Cómo puedo ignorar los archivos en la Subversión?

También, ¿cómo puedo encontrar los archivos que no están bajo el control de versiones?

¿Fue útil?

Solución

(Esta respuesta ha sido actualizado para que coincida con SVN 1.8 y 1.9 del comportamiento)

Tenemos 2 preguntas:

Marca los archivos como ignorados:

Por "ignorado archivo" me refiero a que el archivo no aparecerá en las listas, incluso como "no versionado":su cliente SVN se pretende que el archivo no existe en absoluto en el sistema de ficheros.

Archivos ignorados son especificados por un "patrón de archivo".La sintaxis y formato de archivo de patrones se explica en el SVN de la documentación en línea: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Archivo de Patrones en la Subversión".

La subversión, a partir de la versión 1.8 (junio de 2013) y, más tarde, es compatible con 3 diferentes maneras de especificar el archivo de patrones.He aquí un resumen con ejemplos:

1 - Configuración De Tiempo De Ejecución De La Zona - global-ignores opción:

  • Este es un del lado del cliente sólo la configuración, por lo que su global-ignores lista de no ser compartidas por otros usuarios, y se aplica a todos los repositorios de descarga en su ordenador.
  • Esta configuración se define en su Configuración en tiempo de ejecución el archivo de Área:
    • Windows (basado en archivos) - C:\Users\{you}\AppData\Roaming\Subversion\config
    • De Windows (registro) - Software\Tigris.org\Subversion\Config\Miscellany\global-ignores en ambos HKLM y HKCU.
    • Linux/Unix - ~/.subversion/config

2 - La svn:ignore la propiedad, que se establece en los directorios (no los archivos):

  • Este es almacenado en el repositorio, de modo que otros usuarios tienen el mismo ignorar los archivos.De manera Similar a cómo .gitignore obras.
  • svn:ignore se aplica a los directorios y no es recursiva o heredado.Cualquier archivo o inmediata subdirectorio del directorio principal que coincide con el Patrón de Archivo será excluido.
  • Mientras SVN 1.8 añade el concepto de "propiedades heredadas", el svn:ignore la propiedad en sí se omite en los inmediatos descendientes directorios:

    cd ~/myRepoRoot                             # Open an existing repo.
    echo "foo" > "ignoreThis.txt"                # Create a file called "ignoreThis.txt".
    
    svn status                                  # Check to see if the file is ignored or not.
    > ?    ./ignoreThis.txt
    > 1 unversioned file                        # ...it is NOT currently ignored.
    
    svn propset svn:ignore "ignoreThis.txt" .   # Apply the svn:ignore property to the "myRepoRoot" directory.
    svn status
    > 0 unversioned files                       # ...but now the file is ignored!
    
    cd subdirectory                             # now open a subdirectory.
    echo "foo" > "ignoreThis.txt"                # create another file named "ignoreThis.txt".
    
    svn status
    > ?    ./subdirectory/ignoreThis.txt        # ...and is is NOT ignored!
    > 1 unversioned file
    

    (Por lo que el archivo ./subdirectory/ignoreThis no se ignora, aunque "ignoreThis.txt"se aplica en el . repo raíz).

  • Por lo tanto, para aplicar una lista de ignorados de forma recursiva debe utilizar svn propset svn:ignore <filePattern> . --recursive.

    • Esto creará una copia de la propiedad en cada subdirectorio.
    • Si el <filePattern> el valor es diferente de un niño de directorio, a continuación, el niño del valor invalida completamente el valor de los padres, por lo que no hay "aditivo" efecto.
    • Así que si usted cambia la <filePattern> en la raíz ., entonces usted debe cambiar con --recursive para sobrescribir en el hijo y descendiente de los directorios.
  • Tomo nota de que la sintaxis de línea de comandos es contra-intuitivo.

    • Empecé a-fuera suponiendo que usted no haría caso de un archivo en el SVN escribiendo algo como svn ignore pathToFileToIgnore.txt sin embargo, esta no es la forma de SVN a pasar por alto esta característica funciona.

3 - La svn:global-ignores de la propiedad.Requiere SVN 1.8 (junio de 2013):

  • Esto es similar a svn:ignore, excepto que hace uso de SVN 1.8 del "heredado" propiedades de la función.
  • Para comparar svn:ignore, el archivo de patrón se aplica automáticamente en cada descendiente directorio (no sólo inmediatas de los niños).
    • Esto significa que es necesario establecer svn:global-ignores con el --recursive bandera, heredada ignorar los patrones de archivos son automáticamente aplicados como son heredados.
  • Ejecutar el mismo conjunto de comandos como en el ejemplo anterior, pero utilizando svn:global-ignores lugar:

    cd ~/myRepoRoot                                    # Open an existing repo
    echo "foo" > "ignoreThis.txt"                       # Create a file called "ignoreThis.txt"
    svn status                                         # Check to see if the file is ignored or not
    > ?    ./ignoreThis.txt
    > 1 unversioned file                               # ...it is NOT currently ignored
    
    svn propset svn:global-ignores "ignoreThis.txt" .
    svn status
    > 0 unversioned files                              # ...but now the file is ignored!
    
    cd subdirectory                                    # now open a subdirectory
    echo "foo" > "ignoreThis.txt"                       # create another file named "ignoreThis.txt"
    svn status
    > 0 unversioned files                              # the file is ignored here too!
    

TortoiseSVN los usuarios:

Todo este arreglo era confuso para mí, dado que TortoiseSVN de la terminología (como se usa en su Explorador de Windows menú sistema) fue inicialmente engañosa para mí - yo no estaba seguro de cuál es el significado de la Ignore menú "Añadir de forma recursiva", "Añadir *" y "Agregar " opciones".Espero que este post se explica cómo Ignorar la función de los lazos en el SVN característica de Propiedades.Dicho esto, sugiero utilizar la línea de comandos para configurar archivos ignorados para que pueda obtener una idea de cómo funciona en lugar de utilizar la interfaz gráfica de usuario, y sólo mediante la interfaz gráfica de usuario para manipular las propiedades después de que usted se siente cómodo con la línea de comandos.

Listado de los archivos que son ignorados:

El comando svn status ocultar archivos ignorados (es decir, los archivos que coinciden con un número RGA global-ignores el patrón o el partido de inmediato al directorio padre del svn:ignore patrón o igualar cualquier ancesor del directorio svn:global-ignores patrón.

El uso de la --no-ignore opción para ver los archivos de la lista.Omite los archivos tienen un estado de I, entonces el resultado de la canalización a grep para mostrar sólo las líneas que comienzan con "yo".

El comando es:

svn status --no-ignore | grep "^I"

Por ejemplo:

svn status
> ? foo                             # An unversioned file
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore
> ? foo                             # An unversioned file
> I ignoreThis.txt                  # A file matching an svn:ignore pattern
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore | grep "^I"
> I ignoreThis.txt                  # A file matching an svn:ignore pattern

ta-da!

Otros consejos

Utilice el comando siguiente para crear una lista no bajo el control de versiones de archivos.

svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt

A continuación, edite el archivo dejar sólo los archivos que desea en realidad a ignorar.A continuación, utilice este para omitir los archivos listados en el archivo:

svn propset svn:ignore -F ignoring.txt .

Nota el punto final de la línea.Se dice SVN que la propiedad se establece en el directorio actual.

Eliminar el archivo:

rm ignoring.txt

Por último commit,

svn ci --message "ignoring some files"

A continuación, puede ver qué archivos son ignorados a través de:

svn proplist -v

Si usted está usando TortoiseSVN, haz clic derecho en un archivo y, a continuación, seleccione TortoiseSVN / Añadir a la lista de ignorados.Esto agregará el archivo/comodín a la svn:ignore de la propiedad.

svn:ignore se comprobará cuando se encuentre en los archivos, y los archivos coincidentes serán ignorados.Tengo la siguiente lista de ignorados para Visual Studio .Proyecto de RED:

bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo

Usted puede encontrar esta lista en el menú contextual TortoiseSVN / Propiedades.

Puedes ignorar a un archivo o directorio como .gitignore.Basta con crear un archivo de texto de la lista de directorios/archivos que desea omitir y ejecutar el siguiente código:

svn propset svn:ignore -F ignorelist.txt .

O si usted no desea utilizar un archivo de texto, puedes hacerlo así:

svn propset svn:ignore "first
 second
 third" .

Fuente:Karsten del Blog - Set svn:ignore para varios archivos desde la línea de comandos

He encontrado el artículo .svnignore Ejemplo para Java.

Ejemplo:.svnignore para Ruby on Rails,

/log

/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif

*.*~

Y después de que:

svn propset svn:ignore -F .svnignore .

Ejemplos para .gitignore.Usted puede utilizar para su .svnignore

https://github.com/github/gitignore

Como parece que nadie ha mencionado que...

svn propedit svn:ignore .

A continuación, editar el contenido del archivo para especificar los patrones de ignorar, salga del editor y ya está todo hecho.

Cuando se utiliza propedit asegúrese de que no haya espacios en blanco a medida que hará que el archivo a ser excluidos de la lista de ignorados.

Estos se insertan automáticamente si has uso de la ficha de autocompletar en linux para crear el archivo para comenzar con:

svn propset svn:ignore 'file1
file2' .

Otra solución es:

svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt

o línea por línea

svn st | awk '/^?/{print $2}' > svnignore.txt 
svn propget svn:ignore >> svnignore.txt 
svn propset svn:ignore -F svnignore.txt . 
rm svnignore.txt

Lo que hace:

  1. Obtiene el estado de los archivos desde el svn
  2. Guarda todos los archivos con ? para el archivo "svnignore.txt"
  3. Obtiene el ya se omiten los archivos y las anexa al archivo "svnignore.txt"
  4. Dice el svn para omitir los archivos en "svnignore.txt"
  5. Elimina el archivo

También, si usted utiliza Tortoise SVN usted puede hacer esto:

  1. En el menú contextual, seleccione "TortoiseSVN", luego en "Propiedades"
  2. En la ventana que aparece haz clic en "Nuevo", luego "opciones Avanzadas"
  3. En la ventana que aparece frente a la Propiedad "nombre" escriba o seleccione "svn:ignore", opuesto a "valor de la Propiedad" tipo deseado de nombre de archivo o nombre de carpeta o de archivo de la máscara (en mi caso era "*/destino"), haga clic en "Aplicar la propiedad de forma recursiva"
  4. Ok.Ok.
  5. Cometer

Una versión más fácil de leer bkbilly la respuesta:

svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt

Lo que hace:

  1. Obtiene el estado de los archivos desde el svn
  2. Guarda todos los archivos con ? para el archivo "svnignore.txt"
  3. Obtiene el ya se omiten los archivos y las anexa al archivo "svnignore.txt"
  4. Dice el svn para omitir los archivos en "svnignore.txt"
  5. Elimina el archivo
  1. cd ~/.subversion
  2. abierto de configuración
  3. encontrar la línea como 'global-ignora'
  4. conjunto de ignorar el tipo de archivo como este:global-ignora = *.o *.lo *.la *.al .libs *.así .así.[0-9] *.pyc *.pyo 88 *.rej ~ ## .#* .*.swp .DS_Store node_modules de salida

También puede establecer un patrón global de ignorar en el SVN del archivo de configuración.

svn status le dirá que los archivos no están en el SVN, así como lo que ha cambiado.

Mira el SVN propiedades para la propiedad omitir.

Para todas las cosas SVN, el El Libro Rojo De es de lectura obligada.

Añadir un directorio a la subversión, y a ignorar el contenido del directorio

svn propset svn:ignore '\*.*' .

o

svn propset svn:ignore '*' .

SVN ignore es fácil de manejar en TortoiseSVN.Abierto TortoiseSVN y haga clic en el menú archivo, a continuación, seleccione Agregar a la lista de ignorados.

Esto añadirá los archivos en el svn:ignore de la propiedad.Cuando nos comprobación en los archivos, a continuación, los archivos, que se corresponde con svn:ignore que será ignorado y no se cometan.

En el proyecto de Visual Studio hemos añadido los siguientes archivos a ignorar:

bin obj
*.exe
*.dll
*.pdb
*.suo

Estamos gestionando el código fuente en el SVN de Comparetrap el uso de este método con éxito

Utilice el comando svn status en su copia de trabajo para mostrar el estado de los archivos, los archivos que aún no están bajo el control de versiones (y no se omite) tendrá un signo de interrogación junto a ellos.

Como para ignorar los archivos que usted necesita para editar la propiedad svn:ignore, lea el capítulo Ignorando Ítems no versionados en el svnbook en http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html.El libro también describe más sobre el uso de svn status.

  1. abra usted el uso de JetBrains Producto(es decir,Pycharm)
  2. a continuación, haga clic en el 'commit' botón en la parte superior de la barra de herramientas o usar el atajo "ctrl + k" screenshot_toolbar
  3. en la confirmación de la interfaz, mover los archivos a otra lista de cambios de la siguiente manera.screenshot_commit_change
  4. la próxima vez que sólo puede cometer predeterminada de la lista de cambios.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top