¿Cómo ignoro los archivos en Subversion?
Además, ¿cómo encuentro archivos que no están bajo control de versiones?
¿Cómo ignoro los archivos en Subversion?
Además, ¿cómo encuentro archivos que no están bajo control de versiones?
Respuestas:
(Esta respuesta se ha actualizado para que coincida con el comportamiento de SVN 1.8 y 1.9)
Tienes 2 preguntas:
Por "archivo ignorado" quiero decir que el archivo no aparecerá en las listas incluso como "no versionado": 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 archivos en Subversion".
Subversion, a partir de la versión 1.8 (junio de 2013) y posteriores, admite 3 formas diferentes de especificar patrones de archivo. Aquí hay un resumen con ejemplos:
global-ignores
opción:global-ignores
lista no será compartida por otros usuarios, y se aplica a todos los repositorios que realice en su computadora.C:\Users\{you}\AppData\Roaming\Subversion\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
en ambos HKLM
y HKCU
.~/.subversion/config
svn:ignore
propiedad, que se establece en directorios (no archivos):.gitignore
funciona.svn:ignore
se aplica a directorios y no es recursivo ni se hereda. Se excluirá cualquier archivo o subdirectorio inmediato del directorio principal que coincida con el Patrón de archivo.Si bien SVN 1.8 agrega el concepto de "propiedades heredadas", la svn:ignore
propiedad misma 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, aunque " ignoreThis.txt
" se aplique en la .
raíz del repositorio).
Por lo tanto, para aplicar una lista de ignorados de forma recursiva debe usar svn propset svn:ignore <filePattern> . --recursive
.
<filePattern>
valor es diferente en un directorio hijo, entonces el valor del niño anula completamente a los padres, por lo que no hay un efecto "aditivo".<filePattern>
en la raíz .
, debe cambiarlo --recursive
para sobrescribirlo en los directorios hijo y descendiente.Observo que la sintaxis de la línea de comandos es contra intuitiva.
svn ignore pathToFileToIgnore.txt
sin embargo, esta no es la forma en que funciona la función de ignorar SVN.svn:global-ignores
propiedad. Requiere SVN 1.8 (junio de 2013):svn:ignore
, excepto que hace uso de la característica "propiedades heredadas" de SVN 1.8.svn:ignore
, el patrón de archivo se aplica automáticamente en cada directorio descendiente (no solo en los elementos secundarios inmediatos).
svn:global-ignores
con el --recursive
indicador, ya que los patrones de ignorar heredados se aplican automáticamente a medida que se heredan.Ejecutando el mismo conjunto de comandos que en el ejemplo anterior, pero usando en su 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!
Todo este arreglo fue confuso para mí, porque la terminología de TortoiseSVN (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 es el significado de "Agregar recursivamente", "Agregar *" y "Agregar" del menú Ignorar del menú. 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 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 las propiedades después de que se sienta cómodo con la línea de comandos.
El comando svn status
ocultará los archivos ignorados (es decir, los archivos que coinciden con un global-ignores
patrón RGA , o coinciden con el patrón de un directorio primario inmediato svn:ignore
o con cualquier directorio ancestralsvn:global-ignores
.
Use la --no-ignore
opción para ver esos archivos listados. Los archivos ignorados tienen un estado de I
, luego canalizan la salida agrep
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!
svn propedit svn:ignore .
y no hay un editor de texto configurado, recibirá un mensaje de error que dice svn: E205007: Ninguna de las variables de entorno SVN_EDITOR, VISUAL o EDITOR están configuradas, y no se configuró la opción de configuración de tiempo de ejecución 'editor-cmd' encontrado en lugar de abrir un editor. Tan solo especifique --editor-cmd nano como estesvn propedit svn:ignore . --editor-cmd nano
svn status | grep '^?'
Use el siguiente comando para crear una lista que no esté bajo los archivos de control de versiones.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Luego edite el archivo para dejar 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 .
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"
Luego puede verificar qué archivos se ignoran a través de:
svn proplist -v
svn status | awk "/^?/ {print \$2}" > ignoring.txt
.
svn pg svn:ignore . >> ignore.txt
después del primer comando para agregar las ignoraciones actuales al 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 desea utilizar un archivo de texto, puede 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
svn:ignore
comando (consulte stackoverflow.com/a/58380306/189518 )
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 svn:ignore
propiedad.
svn:ignore
se verificará cuando esté ingresando archivos y se ignorarán los archivos coincidentes. 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 .
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 ya está.
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. Puede usar para su .svnignore
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-autocomplete en linux para crear el archivo para comenzar:
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:
Además, si usa Tortoise SVN, puede hacer esto:
config
archivo.
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:
También puede establecer un patrón de ignorar global en el archivo de configuración de SVN.
svn status
le dirá qué archivos no están en SVN, así como qué ha cambiado.
Mire las propiedades SVN para la propiedad ignorar.
Para todas las cosas SVN, se requiere la lectura del Libro Rojo .
Agregar un directorio a subversion e ignorar el contenido del directorio
svn propset svn:ignore '\*.*' .
o
svn propset svn:ignore '*' .
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 al lado.
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 del estado svn.
SVN ignore
es fácil de administrar en TortoiseSVN. Abra TortoiseSVN y haga clic derecho en el menú de archivo, luego seleccione Agregar para ignorar la lista.
Esto agregará los archivos en la svn:ignore
propiedad. Cuando revisamos los archivos, los archivos que coinciden consvn:ignore
eso 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
Lo que funcionó para mí:
¿Cómo ignoro los archivos en Subversion?
1.En el Explorador de archivos, haga clic derecho en el nombre de la carpeta del proyecto SVN
2.Haga clic en "SVN Commit ..."
3.Aparecerá una ventana "commit"
4.Haga clic derecho en la carpeta / archivo que desea ignorar
5.Haga clic en Agregar para ignorar la lista
6.Seleccione la carpeta / archivo
7.Commitir el "cambio de propiedad" a SVN
Además, ¿cómo encuentro archivos que no están bajo control de versiones?
Después del paso 3 anterior, haga clic en "Mostrar archivos no versionados"