¿Cómo ignoro archivos en Subversion?
¿Cómo ignoro los archivos en Subversion?
Además, ¿cómo puedo encontrar archivos que no están bajo control de versiones?
17 answers
(Esta respuesta se ha actualizado para que coincida con el comportamiento de SVN 1.8 y 1.9)
Tienes 2 preguntas: {[38]]}
Marcar archivos como ignorados:
Por "archivo ignorado" quiero decir que el archivo no aparecerá en las listas incluso como "sin versionar": 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 explican en la documentación en línea de SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Patrones de archivo en Subversion".
Subversion, a partir de la versión 1.8 (junio de 2013) y posteriores, soporta 3 formas diferentes de especificar patrones de archivo. He aquí un resumen con ejemplos:
1-Área de Configuración en tiempo de ejecución - global-ignores
opción:
- Esta es una configuración solo del lado del cliente, por lo que su lista
global-ignores
no será compartida por otros usuarios, y se aplica a todos los repositorios en los que realice la compra tu computadora. - Esta configuración se define en el archivo de área de configuración de tiempo de ejecución:
- 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 enHKLM
como enHKCU
. - Linux / Unix -
~/.subversion/config
- Windows (basado en archivos) -
2-La propiedad svn:ignore
, que se establece en directorios (no en archivos):
- Esto se almacena dentro del repositorio, por lo que otros usuarios tendrán los mismos archivos ignorados. Similar a cómo funciona
.gitignore
. -
svn:ignore
se aplica a directorios y no es recursivo o heredado. Se excluirá cualquier archivo o subdirectorio inmediato del directorio padre que coincida con el Patrón del archivo. -
Mientras que SVN 1.8 agrega el concepto de "propiedades heredadas", la propiedad
svn:ignore
en sí 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 que el archivo
./subdirectory/ignoreThis
no se ignora, a pesar de que "ignoreThis.txt
" se aplica en la raíz del repositorio.
). -
Por lo tanto, para aplicar un ignore list recursivamente debe usar
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 hijo, entonces el valor del hijo reemplaza completamente a los padres, por lo que no hay un efecto "aditivo". - Así que si cambia el
<filePattern>
en la raíz.
, entonces debe cambiarlo con--recursive
para sobrescribirlo en los directorios hijo y descendiente.
-
Observo que la línea de comandos la sintaxis es contra-intuitiva.
- Empecé asumiendo que ignorarías un archivo en SVN escribiendo algo como
svn ignore pathToFileToIgnore.txt
sin embargo, así no es como funciona la función ignorar de SVN.
- Empecé asumiendo que ignorarías un archivo en SVN escribiendo algo como
3 - La propiedad svn:global-ignores
. Requiere SVN 1.8 (junio de 2013):
- Esto es similar a
svn:ignore
, excepto que hace uso de la característica "propiedades heredadas" de SVN 1.8. - En comparación con
svn:ignore
, el patrón de archivo se aplica automáticamente en cada directorio descendiente (no solo niños inmediatos).- Esto significa que no es necesario establecer
svn:global-ignores
con la bandera--recursive
, ya que los patrones de archivo ignorados heredados se aplican automáticamente a medida que se heredan.
- Esto significa que no es necesario establecer
-
Ejecutando el mismo conjunto de comandos que en el ejemplo anterior, pero usando
svn:global-ignores
en su 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 (como se usa en su menú del Explorador de Windows sistema) fue inicialmente engañoso para mí-no estaba seguro de cuál era el significado de las opciones "Agregar recursivamente", "Agregar *" y "Agregar" del menú Ignorar. Espero que este post explique cómo la función Ignorar se relaciona con la función SVN Properties. Dicho esto, sugiero usar la línea de comandos para establecer archivos ignorados para que tenga una idea de cómo funciona en lugar de usar la GUI, y solo usar la GUI para manipular propiedades después de que se sienta cómodo con la línea de comandos.
Listar archivos que son ignorado:
El comando svn status
ocultará archivos ignorados (es decir, archivos que coincidan con un patrón RGA global-ignores
, o que coincidan con el patrón svn:ignore
de un directorio padre inmediato o que coincidan con el patrón svn:global-ignores
de cualquier directorio ancestro.
Use la opción --no-ignore
para ver esos 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!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-13 13:40:47
Utilice el siguiente comando para crear una lista que no esté bajo archivos de control de versiones.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Luego edite el archivo a deje solo los archivos que realmente desea ignorar. Luego use este para ignorar los archivos listados en el archivo:
svn propset svn:ignore -F ignoring.txt .
Observe el punto al final de la línea. Le dice a SVN que la propiedad está siendo establecida en el directorio actual.
Eliminar el archivo:
rm ignoring.txt
Finalmente commit,
svn ci --message "ignoring some files"
A continuación, puede comprobar qué archivos se ignoran via:
svn proplist -v
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-30 13:39:27
Si está utilizando TortoiseSVN, haga clic con el botón derecho en un archivo y luego seleccione TortoiseSVN / Add to ignore list. Esto añadirá el fichero / comodín a la propiedad svn:ignore
.
svn:ignore
se comprobará 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 / Properties.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-28 16:56:51
Puede ignorar un archivo o directorio como .gitignore
. Simplemente cree un archivo de texto de la lista de directorios / archivos que desea ignorar y ejecute el siguiente código:
svn propset svn:ignore -F ignorelist.txt .
O si no quieres usar un archivo de texto, puedes hacerlo así:
svn propset svn:ignore "first
second
third" .
Source: Karsten's Blog-Set svn: ignore for multiple files from command line
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-05 20:13:35
Encontré el artículo .ejemplo de svnignore para Java.
Ejemplo: .svnignore para Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
Y después de eso:
svn propset svn:ignore -F .svnignore .
Ejemplos para .gitignore. Usted puede utilizar para su .svnignore
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-15 16:23:42
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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-26 21:37:07
Cuando use propedit asegúrese de no tener espacios finales, ya que eso hará que el archivo se excluya de la lista de ignorados.
Estos se insertan automáticamente si ha utilizado tab-autocompletar en linux para crear el archivo para empezar:
svn propset svn:ignore 'file1
file2' .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-01 13:54:11
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:
- Obtiene los archivos de estado del svn
- Guarda todos los archivos con ? al archivo "svnignore.txt "
- Obtiene los archivos ya ignorados y los añade al archivo "svnignore.txt "
- Le dice al svn que ignore los archivos en "svnignore.txt "
- Elimina el archivo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-01 02:00:34
También, si usa Tortoise SVN, puede hacer esto:
- En el menú contextual seleccione "TortoiseSVN", luego "Properties"
- En la ventana que apareció, haga clic en" Nuevo", luego en"Avanzado"
- En la ventana que aparece frente a "Property name" seleccione o escriba "svn: ignore", frente a" Property value "escriba el nombre de archivo deseado o el nombre de la carpeta o la máscara de archivo (en mi caso era" */target"), haga clic en"Apply property recursively"
- Ok. Ok.
- Commit
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-14 17:32:45
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
Lo que hace:
- Obtiene los archivos de estado del svn
- Guarda todos los archivos con ? al archivo "svnignore.txt "
- Obtiene los archivos ya ignorados y los añade al archivo "svnignore.txt "
- Le dice al svn que ignore los archivos en "svnignore.txt "
- Elimina el archivo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-14 17:31:58
También puede establecer un patrón global ignore en el archivo de configuración de SVN.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-17 18:18:16
svn status
le dirá qué archivos no están en SVN, así como qué ha cambiado.
Mire las propiedades SVN para la propiedad ignore.
Para todas las cosas SVN, el Libro Rojo es lectura obligatoria.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-15 16:20:37
Añadiendo un directorio a subversion, e ignorando el contenido del directorio
svn propset svn:ignore '\*.*' .
O
svn propset svn:ignore '*' .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-05 20:13:00
- cd ~/.subversion
- abrir configuración
- encuentra la línea como'global-ignores'
- establezca el tipo de archivo ignore como este: global-ignores = *.o *.lo*. la*. al .libs*. so . so.[0-9] *.pyc*.pyo 88 *.rej ~ ## .#* .*.swp .DS_Store node_modules output
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-11 09:54:37
SVN ignore
es fácil de administrar en TortoiseSVN. Abra TortoiseSVN y haga clic con el botón derecho en el menú archivo y luego seleccione Agregar a la lista de ignorados.
Esto agregará los archivos en la propiedad svn:ignore
.
Cuando revisamos los archivos, entonces aquellos archivos que coinciden con svn:ignore
que serán ignorados y no se confirmarán.
En el proyecto de Visual Studio hemos añadido los siguientes archivos para ignorar:
bin obj
*.exe
*.dll
*.pdb
*.suo
Estamos administrando el código fuente en SVN de Comparetrap utilizando este método con éxito
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-06 11:11:56
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 control de versiones (y no ignorados) tendrán un signo de interrogación junto a ellos.
En cuanto a ignorar archivos necesita editar la propiedad svn: ignore, lea el capítulo Ignorar Elementos 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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-17 18:19:39
- abrir se utiliza el producto JetBrains (es decir, Pycharm)
- luego haga clic en el botón 'confirmar' en la barra de herramientas superior o use el acceso directo 'ctrl + k' screenshot_toolbar
- en la interfaz de confirmación, mueva sus archivos no deseados a otra lista de cambios de la siguiente manera. screenshot_commit_change
- la próxima vez solo puede confirmar la lista de cambios predeterminada.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-06 06:00:35