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?
- abrir usted 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.
- cd ~ / .subversion
- configuración abierta
- encuentra la línea como ''global-ignora''
- 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 enHKLM
como enHKCU
. - Linux / Unix -
~/.subversion/config
- Windows (basado en archivos) -
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ízignoreThis.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.
- Comencé suponiendo 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 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.
- Esto significa que no es necesario establecer
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:
- En el menú contextual, seleccione "TortoiseSVN", luego "Propiedades"
- En la ventana aparecida, haga clic en "Nuevo", luego "Avanzado"
- 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 "
- De acuerdo. De acuerdo.
- 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'' .
Encontré 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 eso:
svn propset svn:ignore -F .svnignore .
Ejemplos para .gitignore. Puedes usar para tu .svnignore
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:
- Obtiene los archivos de estado de la svn.
- Guarda todos los archivos con ? al archivo "svnignore.txt"
- Obtiene los archivos ya ignorados y los agrega al archivo "svnignore.txt"
- Le dice a la svn que ignore los archivos en "svnignore.txt"
- Elimina el archivo
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" .
Fuente: Blog de Karsten - Establecer svn: ignorar para múltiples archivos desde la línea de comandos
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:
- Obtiene los archivos de estado de la svn.
- Guarda todos los archivos con ? al archivo "svnignore.txt"
- Obtiene los archivos ya ignorados y los agrega al archivo "svnignore.txt"
- Le dice a la svn que ignore los archivos en "svnignore.txt"
- 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
Agregar un directorio a subversion e ignorar el contenido del directorio
svn propset svn:ignore ''/*.*'' .
o
svn propset svn:ignore ''*'' .
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 .