una trabajo tortoise subir repositorio puerto proyecto por desvincular defecto crear copia con como carpeta archivos svn command

svn - trabajo - ¿Cómo ignoro los archivos en Subversion?



tortoise svn pdf (17)

¿Cómo ignoro los archivos en Subversion?

Además, ¿cómo encuentro archivos que no están bajo el control de versiones?


  1. abrir usted utiliza el producto JetBrains (es decir, Pycharm)
  2. luego haga clic en el botón ''confirmar'' en la barra de herramientas superior o use el acceso directo ''ctrl + k'' screenshot_toolbar
  3. en la interfaz de confirmación, mueva sus archivos no deseados a otra lista de cambios de la siguiente manera. screenshot_commit_change
  4. La próxima vez solo puede confirmar la lista de cambios predeterminada.

  1. cd ~ / .subversion
  2. configuración abierta
  3. encuentra la línea como ''global-ignora''
  4. establezca el tipo de archivo ignorado como este: global-ignores = * .o * .lo * .la * .al .libs * .so .so . [0-9] * .pyc * .pyo 88 * .rej ~ # #. # *. *. swp .DS_Store node_modules output

(Esta respuesta se ha actualizado para que coincida con el comportamiento de SVN 1.8 y 1.9)

Tienes 2 preguntas:

Marcar los archivos como ignorados:

Por "archivo ignorado" me refiero a que el archivo no aparecerá en las listas incluso como "sin versión": su cliente SVN fingirá que el archivo no existe en absoluto en el sistema de archivos.

Los archivos ignorados se especifican mediante un "patrón de archivo". La sintaxis y el formato de los patrones de archivo se explica en la documentación en línea de SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "File Patterns in Subversion".

Subversion, a partir de la versión 1.8 (junio de 2013) y posterior, admite 3 formas diferentes de especificar patrones de archivos. Aquí hay un resumen con ejemplos:

1 - Área de configuración de tiempo de ejecución - opción global-ignores :

  • Esta es una configuración exclusiva del lado del cliente , por lo que su lista de global-ignores no será compartida por otros usuarios, y se aplica a todos los repositorios que realice en su computadora.
  • Esta configuración se define en su archivo del Área de configuración de Runtime:
    • Windows (basado en archivos) - C:/Users/{you}/AppData/Roaming/Subversion/config
    • Windows (basado en el registro): Software/Tigris.org/Subversion/Config/Miscellany/global-ignores tanto en HKLM como en HKCU .
    • Linux / Unix - ~/.subversion/config

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

  • Esto se almacena en el repositorio, por lo que otros usuarios tendrán los mismos archivos de ignorar. Similar a cómo funciona .gitignore .
  • svn:ignore se aplica a los directorios y es no recursivo o heredado. Se excluirá cualquier archivo o subdirectorio inmediato del directorio principal que coincida con el patrón de archivo.
  • Mientras SVN 1.8 agrega el concepto de "propiedades heredadas", la propiedad svn:ignore se ignora en los directorios descendientes no inmediatos:

    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 tanto, el archivo ./subdirectory/ignoreThis no se ignora, a pesar de que " ignoreThis.txt " se aplica en la raíz ignoreThis.txt ).

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

    • Esto creará una copia de la propiedad en cada subdirectorio.
    • Si el valor <filePattern> es diferente en un directorio secundario, entonces el valor del niño reemplaza completamente a los padres, por lo que no hay un efecto "aditivo".
    • Así que si cambias el <filePattern> en la raíz . , entonces debe cambiarlo con --recursive para sobrescribirlo en los directorios descendientes y secundarios.
  • Observo que la sintaxis de la línea de comandos es contraintuitiva.

    • Comencé suponiendo que ignorarías un archivo en SVN escribiendo algo como svn ignore pathToFileToIgnore.txt sin embargo, no es así como funciona la función de ignorar de SVN.

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

  • Esto es similar a svn:ignore , excepto que utiliza la función de "propiedades heredadas" de SVN 1.8.
  • Compare con svn:ignore , el patrón de archivo se aplica automáticamente en cada directorio descendiente (no solo en los hijos inmediatos).
    • Esto significa que no es necesario establecer svn:global-ignores con el indicador --recursive , ya que los patrones de archivos ignorados heredados se aplican automáticamente a medida que se heredan.
  • Ejecutando el mismo conjunto de comandos que en el ejemplo anterior, pero usando 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!

Para los usuarios de TortoiseSVN:

Todo este arreglo fue confuso para mí, porque la terminología de TortoiseSVN (tal como se usa en su sistema de menús del Explorador de Windows) fue inicialmente engañosa para mí: no estaba seguro de cuál era el significado de "Agregar recursivamente", "Agregar" y "Agregar" opciones Espero que esta publicación explique cómo la función Ignorar se vincula con la función Propiedades de SVN. Dicho esto, sugiero usar la línea de comandos para configurar los archivos ignorados para que pueda tener una idea de cómo funciona en lugar de usar la GUI, y solo usar la GUI para manipular las propiedades después de sentirse cómodo con la línea de comandos.

Listado de archivos que son ignorados:

El comando svn status ocultará los archivos ignorados (es decir, los archivos que coinciden con un patrón RGA global-ignores , o coinciden con el patrón primario inmediato svn:ignore pattern o coinciden con cualquier directorio svn:global-ignores del directorio principal).

Use la --no-ignore para ver los archivos listados. Los archivos ignorados tienen un estado de I , luego canalizan la salida a grep para mostrar solo las líneas que comienzan con "I".

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!


Además, si usas Tortoise SVN puedes hacer esto:

  1. En el menú contextual, seleccione "TortoiseSVN", luego "Propiedades"
  2. En la ventana aparecida, haga clic en "Nuevo", luego "Avanzado"
  3. En la ventana que aparece frente al "Nombre de la propiedad", seleccione o escriba "svn: ignore", opuesto al "Valor de la propiedad", escriba el nombre del archivo deseado o el nombre de la carpeta o la máscara del archivo (en mi caso era "* / target"), haga clic en "Aplicar propiedad recursivamente "
  4. De acuerdo. De acuerdo.
  5. Cometer

Como nadie parece haberlo mencionado ...

svn propedit svn:ignore .

Luego edite el contenido del archivo para especificar los patrones a ignorar, salga del editor y listo.


Cuando utilice propedit, asegúrese de no tener ningún espacio al final, ya que esto hará que el archivo se excluya de la lista de ignorados.

Estos se insertan automáticamente si ha usado tab-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

Que hace:

  1. Obtiene los archivos de estado de la svn.
  2. Guarda todos los archivos con ? al archivo "svnignore.txt"
  3. Obtiene los archivos ya ignorados y los agrega al archivo "svnignore.txt"
  4. Le dice a la svn que ignore los archivos en "svnignore.txt"
  5. Elimina el archivo


Si está utilizando TortoiseSVN , haga clic derecho en un archivo y luego seleccione TortoiseSVN / Agregar para ignorar la lista . Esto agregará el archivo / comodín a la propiedad svn:ignore .

svn:ignore se verificará cuando esté registrando archivos, y los archivos coincidentes se ignorarán. Tengo la siguiente lista de ignorados para un proyecto de Visual Studio .NET:

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

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


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


Una versión más legible de la respuesta de bkbilly:

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

Que hace:

  1. Obtiene los archivos de estado de la svn.
  2. Guarda todos los archivos con ? al archivo "svnignore.txt"
  3. Obtiene los archivos ya ignorados y los agrega al archivo "svnignore.txt"
  4. Le dice a la svn que ignore los archivos en "svnignore.txt"
  5. Elimina el archivo

Use 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 ignoran) tendrán un signo de interrogación junto a ellos.

En cuanto a ignorar los archivos, debe editar la propiedad svn: ignore, lea el capítulo Ignorar elementos no revisados ​​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.


Use el siguiente comando para crear una lista que no esté en los archivos de control de versión.

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

Luego edite el archivo para dejar solo los archivos que realmente quiere ignorar . Luego use este para ignorar los archivos listados en el archivo:

svn propset svn:ignore -F ignoring.txt .

Tenga en cuenta el punto al final de la línea. Le dice a SVN que la propiedad se está configurando en el directorio actual.

Eliminar el archivo:

rm ignoring.txt

Finalmente cometer,

svn ci --message "ignoring some files"

A continuación, puede comprobar qué archivos se ignoran a través de:

svn proplist -v



ignore SVN es fácil de administrar en TortoiseSVN. Abra TortoiseSVN y haga clic con el botón derecho en el menú de archivo, luego seleccione Agregar para ignorar la lista.

Esto agregará los archivos en la propiedad svn:ignore . Al registrar los archivos, los archivos que coincidan con svn:ignore se ignorarán y no se confirmarán.

En el proyecto de Visual Studio hemos agregado los siguientes archivos para ignorar:

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

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


svn status le dirá qué archivos no están en SVN, así como qué ha cambiado.

Mira las propiedades SVN para la propiedad ignorar.

Para todas las cosas SVN, se requiere la lectura del Libro Rojo .