usuarios tortoise subir proyecto ignorar desvincular crear con como carpeta borrar archivos archivo svn

tortoise - Usar svn: ignorar para ignorar todo menos ciertos archivos



svn ignore file (6)

Con la propiedad svn: ignore, ¿hay alguna manera de especificar lo que quiero ignorar en base a patrones que no quiero ignorar? En otras palabras, quiero ignorar todo menos los archivos que terminan en .xyz. ¿Cómo haría eso (si es posible)?

Una opción que he explorado es la de comprometer todo lo que quiero ser versionado, luego establecer la propiedad svn: ignore en el directorio para que sea ''*'', lo que significa que no habrá otros archivos, pero lo que ya he confirmado se versionará. Esto es lo mejor que se me ocurre, pero se siente sucio porque si alguna vez tuviera que agregar otro archivo para ser una versión, tendría que hacer varias confirmaciones ... una para eliminar la propiedad svn: ignorar, otra para agregar / confirmar el nuevo archivo (s), y luego un tercero para cambiar svn: ignorar de nuevo a ''*''.

¿Tus pensamientos?


Esa es la única solución que conozco. Sin embargo, puedes agregar archivos explícitamente aunque se ignoren.

Sin embargo, necesitaría agregar esa configuración en todos los subdirectorios.

# Create a repository with property ignore * [wlynch@orange ~] cd /tmp [wlynch@orange /tmp] svnadmin create foo [wlynch@orange /tmp] svn co file:///tmp/foo co Checked out revision 0. [wlynch@orange /tmp] cd co [wlynch@orange co] svn propset svn:ignore /* . property ''svn:ignore'' set on ''.'' # Create 3 files [wlynch@orange co] touch a [wlynch@orange co] touch b [wlynch@orange co] touch c # We can add all 3 of these files in one transaction [wlynch@orange co] svn status M . [wlynch@orange co] svn add a A a [wlynch@orange co] svn add b A b [wlynch@orange co] svn status M . A a A b [wlynch@orange co] svn add c A c [wlynch@orange co] svn ci Sending . Adding a Adding b Adding c Transmitting file data ... Committed revision 1.


Eche un vistazo a http://www.thoughtspark.org/node/38 . Obviamente puedes usar "!" en grupos de personajes para negar su significado. Por lo tanto, si desea ignorar todo, excepto los archivos que terminan en .java, establezca el siguiente patrón en svn: ignorar:

*[!j][!a][!v][!a] *.java?*


Esto es lo que he establecido en la carpeta bin para la propiedad svn:ignore para que coincida con todo, excepto con los archivos apk:

*[!a][!p][!k] *a[!p][!k] *ap[!k]

Si hubiera una compatibilidad total con RegExp, podría utilizar la apariencia negativa, pero rara vez se implementa de todos modos (por ejemplo, no en JavaScript) y es ineficiente.


Lo siguiente funciona para mí y se deshace de algunos caprichos de las otras sugerencias.

*.? *.?? *.??? *.[!j]??? *.?[!a]?? *.??[!v]? *.???[!a] *.?????*

Una explicación línea por línea sigue:

  • ignorar todo lo que tiene una extensión de una letra
  • ignorar todo lo que tiene una extensión de dos letras
  • ignorar todo lo que tiene una extensión de tres letras
  • ignorar todo lo que tiene una extensión de cuatro letras donde la primera letra de la extensión no es j
  • ignore todo lo que tiene una extensión de cuatro letras donde la segunda letra de la extensión no es una
  • ignore todo lo que tiene una extensión de cuatro letras donde la tercera letra de la extensión no es v
  • ignorar todo lo que tiene una extensión de cuatro letras donde la cuarta letra de la extensión no es una
  • ignore todo lo que tenga una extensión de cinco letras o más

Limitaciones

  • Esto también bloqueará los directorios que terminan en .java
  • Lamentablemente, no pude ignorar archivos sin extensión, ya que eso también bloquearía directorios.

Bueno, no sé si me extraño algo, pero puedes usar cualquier patrón que desees:

svn propset svn:ignore "*~" .

Puede consultar con:

svn propget svn:ignore .

Otra forma es usar un alias / script que pueda hacer un análisis complejo al momento de la confirmación.

La mejor solución que encuentro para utilizarme es separar completamente el árbol versionado de los archivos fuente del árbol de compilación. De esta forma, no genera cosas en su árbol versionado de un directorio. Entonces solo puede usar svn:ignore para ignorar artefactos simples generados por editores de texto, por ejemplo.

EDITAR:

Perdón por mi error con la primera solución. He leído mal tu publicación. Las otras dos formas parecen relevantes, incluso si no es exactamente lo que quieres ...


No, no hay una coincidencia exclusiva como la que describió. Este artículo enumera las posibilidades para la coincidencia de patrones. Está limitado a:

  • ? - Coincide con cualquier personaje
  • * - Coincide con cualquier cadena de caracteres, incluida la cadena vacía
  • [ - Inicia una definición de clase de carácter terminada por ] , utilizada para hacer coincidir un subconjunto de caracteres

Ya se hizo una pregunta similar aquí .