Pregunta

Recién comencé a usar SVN y tengo un directorio de caché que no necesito bajo el control de código fuente.¿Cómo puedo ignorar todo el directorio/carpeta con SVN?

estoy usando Versiones y Mate de texto en OS X y línea de comandos.

¿Fue útil?

Solución

Selecciona el svn:ignore propiedad del directorio padre:

svn propset svn:ignore dirname .

Si tiene varias cosas que ignorar, sepárelas con nuevas líneas en el valor de la propiedad.En ese caso, es más fácil editar el valor de la propiedad usando un editor externo:

svn propedit svn:ignore .

Otros consejos

A continuación se muestra un ejemplo de estructura de directorios:

\project
    \source
    \cache
    \other

Cuando en project verá que su directorio de caché no se agrega y aparece como tal.

> svn st
M  source
?  cache

Para establecer la propiedad ignorar, haga

svn propset svn: ignorar caché.

dónde svn:ignore es el nombre de la propiedad que estás configurando, cache es el valor de la propiedad, y . es el directorio en el que está configurando esta propiedad.Debería ser el directorio principal del cache directorio que necesita la propiedad.

Para comprobar qué propiedades están configuradas:

> svn proplist
Properties on '.':
  svn:ignore

Para ver el valor de svn:ignore:

> svn propget svn:ignore
cache

Para eliminar propiedades previamente establecidas:

svn propdel svn:ignore

Importante mencionar:

En la línea de comando no puedes usar

svn add *

Esto también agregará los archivos ignorados, porque la línea de comando se expande * y por lo tanto svn add cree que desea que se agreguen todos los archivos.Por lo tanto, utilice esto en su lugar:

svn add --force .

Como pasé un tiempo intentando que esto funcionara, cabe señalar que si los archivos ya existen en SVN, es necesario svn delete y luego editarlos. svn:ignore propiedad.

Sé que parece obvio, pero seguían apareciendo como ? en mi svn status lista, cuando pensé que simplemente los ignoraría localmente.

Para ampliar ligeramente, si está haciendo esto con la herramienta de línea de comandos svn, deberá escribir:

svn propedit svn:ignore path/to/dir

que abrirá el editor de texto de su elección, luego escriba '*' para ignorar todo lo que contiene y guarde+salir; esto incluirá el directorio en sí en svn, pero ignorará todos los archivos que contiene, para ignorar el directorio, use el ruta del padre y luego escriba el nombre del directorio en el archivo.Después de guardar, ejecute una actualización ("svn up") y luego verifique la ruta adecuada.

Selecciona el svn:ignore propiedad en el directorio principal:

$ cd parentdir
$ svn ps svn:ignore . 'cachedir'

Esto sobrescribirá cualquier valor actual de svn:ignore.Puedes editar el valor con:

$ svn pe svn:ignore .

Lo que abrirá su editor.Puede agregar varios patrones, uno por línea.

Puede ver el valor actual con:

$ svn pg svn:ignore .

Si está utilizando una GUI, debería haber una opción de menú para hacer esto.

Gracias por todas las contribuciones anteriores.Solo me gustaría compartir información adicional de mis experiencias al ignorar archivos.


Cuando las carpetas ya están bajo control de revisión

Después importación svn y svn co los archivos, lo que solemos hacer por primera vez.

Todo el caché en tiempo de ejecución y las carpetas de archivos adjuntos estarán bajo control de versiones.entonces, antes svn ps svn: ignorar, necesitamos eliminarlo del repositorio.

Con la versión 1.5 de SVN anterior podemos usar svn del --keep-local your_folder, pero para una versión anterior, mi solución es:

  1. exportación svn una copia limpia de sus carpetas (sin .svn carpeta oculta)
  2. svndel el local y el repositorio,
  3. svnci
  4. Copiar de nuevo las carpetas
  5. Hacer svn st y confirme que las carpetas estén marcadas como '?'
  6. ahora podemos hacer svn ps según las soluciones

Cuando necesitamos ignorar más de una carpeta

  • En un directorio tengo dos carpetas que deben configurarse como svn:ignore
  • Si configuramos uno, el otro será eliminado.
  • Entonces nos preguntamos si necesitamos svn pe

svn pe Necesitará editar el archivo de texto, y puede usar este comando si es necesario para configurar su editor de texto usando vi:

export SVN_EDITOR=vi
  1. Con "o" puedes abrir una nueva línea.
  2. Escriba todos los nombres de carpetas que desee ignorar
  3. Presione la tecla 'esc' para salir del modo de edición
  4. Escribe ":wq" y luego presiona Ingresar guardar y salir

El archivo se ve simplemente así:

runtime
cache
attachments
assets

Quitarlo primero...

Si su directorio foo ya está bajo control de versiones, elimínelo primero con:

svn rm --keep-local foo

...luego ignora:

svn propset svn:ignore foo .

...y si desea ignorar más de un directorio (digamos build/ temp/ y *.tmp archivos), puede hacerlo en dos pasos (ignorando el primero y editando las propiedades de ignorar (ver otras respuestas aquí) o se podría escribir algo como

svn propset svn:ignore "build
temp
*.tmp" .

en la línea de comando.

Si está utilizando el cliente SVN particular TortugaSVN, luego, al confirmar, tiene la opción de hacer clic derecho en los elementos y seleccionar "Agregar a la lista de ignorados".

El comando para ignorar varias entradas es un poco complicado y requiere barras invertidas.

svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .

Este comando ignorará cualquier cosa llamada cache, tmp, null, y and_so_on en el directorio actual.

Tuve problemas para ignorar los directorios anidados;el directorio superior que quería ignorar no se mostraba con 'estado svn', pero todos los subdirectorios sí.Probablemente esto sea evidente para todos los demás, pero pensé en compartirlo:

EJEMPLO:

/trompa

/tronco/caché

/trunk/cache/subdir1

/trunk/cache/subdir2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci

"Gracias" svn por una forma tan horrible, falsa y difícil de ignorar archivos.

Entonces escribí un guión svn-ignorar-todo:

#!/bin/sh

# svn-ignore-all

# usage: 
#   1. run svn status to see what is going on at each step 
#   2. add or commit all files that you DO want to have in svn
#   3. remove any random files that you don't want to svn:ignore
#   4. run this script to svn:ignore everything marked '?' in output of `svn status`

svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

Además, para ignorar una lista específica de archivos/nombres de ruta, podemos usar esta variante svn-ignorar.Supongo que svn-ignore-all debería ser como xargs svn-ignore.

#!/bin/sh

# svn-ignore

# usage:
#   svn-ignore file/to/ignore ...

for f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

Una cosa más:Tiendo a contaminar mis pagos svn con muchos archivos aleatorios.Cuando llega el momento de confirmar, muevo esos archivos a un subdirectorio "antiguo" y le digo a svn que ignore "antiguo".

Bash oneliner para múltiples ignoraciones:

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"

Si el directorio de su proyecto se llama /Project y su directorio de caché se llama /Project/Cache, entonces necesita establecer una propiedad de subversión en /Project.El nombre de la propiedad debe ser "svn:ignore" y el valor de la propiedad debe ser "Caché".

Referirse a este página en el manual de Subversion para obtener más información sobre las propiedades.

La respuesta de Jason funcionará.Sin embargo, en lugar de configurar SVN: ignorar a ". En el directorio de caché, es posible que desee incluir "caché" en el padre propiedad svn:ignore del directorio, en caso de que el directorio de caché no siempre esté presente.Hago esto en varias carpetas "desechables".

PARA MANTENER DIRECTORIOS QUE SVN IGNORARÁ:

  1. esto eliminará los archivos del repositorio, pero mantendrá el directorio bajo control SVN:

svn eliminar --keep-local ruta/directorio_a_mantener/*

  1. luego configúrelo para ignorar el directorio (y todo el contenido):

svn propset svn: ignorar "*" ruta/directorio_a_mantener

Si está utilizando una interfaz para SVN como TortoiseSVN, o algún tipo de integración IDE, también debería haber una opción de ignorar en el mismo menú que la operación de confirmación/agregación.

Establecer el svn: ignorar propiedad.La mayoría de las herramientas UI svn tienen una manera de hacer esto, así como la discusión sobre la línea de comando en el enlace.

Dado que estás usando Versiones, en realidad es muy fácil:

  • Explore su copia prestada
  • Haga clic en el directorio para ignorar
  • En el cuadro "Ignorar a la derecha, haga clic en Editar".
  • Escriba *.* para ignorar todos los archivos (o *.jpg solo para archivos jpg, etc.)

Observe también las barras diagonales finales.encontré que incluyendo images/* en mi archivo de configuración de ignorar no se ignoró ./images/.cuando corrí svn status -u todavía se mostró ? images.Entonces, simplemente cambié la configuración de ignorar a solo images, sin barras.Realicé una verificación de estado y eso lo borró.

Resuelto con Eclipse de la siguiente manera:

En primer lugar, realice una sincronización de su carpeta con el proyecto:

equipo -> sincronizar

En la siguiente vista, vista de equipo, puede ver todos los recursos que puede asignar al servidor SVN.

Entonces, seleccione la carpeta de recursos del recurso que desea ignorar y luego podrá ignorarlo usando

equipo -> agregar a svn:ignore.

Después de eso, en la ventana de confirmación, seleccione la primera opción:"ignorar por nombre".

Por ejemplo, si quiero ignorar la carpeta de destino y sus recursos .class, sincronizaré y, en la vista de sincronización, seleccionaré la carpeta de destino.Después de eso, seleccionaré

equipo->añadir

a svn:ignore y luego confirmaré la primera opción en la ventana de confirmación.

Después de perder mucho tiempo buscando cómo hacer esta sencilla actividad, decidí publicar que no fue difícil encontrar una explicación decente.

Primero deja que la estructura de la muestra.

$ svn st?Proyecto/Trunk/Target?proyecto/trunk/miarchivo.x

1 - Primero configure el editor, en mycase vim export svn_editor = vim

2 – “svn propedit svn:ignore project/trunk/” abrirá un nuevo archivo y podrá agregar sus archivos y subdirectorio, en nuestro caso escriba “destino”, guarde y cierre el archivo y funcione.

$ svn st?proyecto/trunk/miarchivo.x

gracias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top