Estoy buscando una buena manera de 'agregar automáticamente' todos los archivos no versionados en una copia de trabajo a mi repositorio SVN.
Tengo un servidor en vivo que puede crear algunos archivos que deberían estar bajo control de origen. Me gustaría tener un script corto que pueda ejecutar para agregarlos automáticamente, en lugar de revisarlos y agregarlos uno por uno.
Mi servidor ejecuta Windows Server 2003, por lo que una solución Unix no funcionará.
svn
command-line
windows-server-2003
JerSchneid
fuente
fuente
Respuestas:
svn add --force * --auto-props --parents --depth infinity -q
Gran consejo! Una observación: mi Eclipse agrega automáticamente nuevos archivos a la lista de ignorados. Puede ser una cuestión de configuración, pero de todos modos: existe la
--no-ignore
opción que ayuda.Después de esto, puede comprometerse:
fuente
alias magic="svn add --force * --auto-props --parents --depth infinity -q"
- Explicado:svn help add
*
al final, de lo contrario no funcionaría (al menos para mí)Esta es una pregunta diferente a la mía, pero hay una respuesta que pertenece a esta pregunta:
fuente
Lo que funciona es esto:
Agrega el contenido de subdirectorios.
No agrega archivos ignorados.
Enumera qué archivos se agregaron.
El punto en el comando indica el directorio actual, esto puede reemplazarse por un nombre de directorio o ruta específicos si desea agregar un directorio diferente al actual.
fuente
.\*
o si svn root está en un directorio diferentestuff\svn_root\*
.stuff\svn_root
que no agrega archivos en subdirectorios (por ejemplo, enstuff\svn_root\already_in_svn\not_in_svn.txt
). De ahí la estrella al final.Esto funcionó para mí:
( Fuente )
Como ya resolvió su problema para Windows, esta es una solución UNIX (siguiendo a Sam). Agregué aquí porque creo que todavía es útil para aquellos que llegan a esta pregunta y preguntan por lo mismo (ya que el título no incluye la palabra clave "VENTANAS").
Nota (febrero de 2015): como comentó "bdrx", el comando anterior podría simplificarse aún más de esta manera:
fuente
awk '/^[?]/{print $2}'
; No es necesario el proceso grep adicional.Esto agregará cualquier archivo no versionado en el directorio actual y todos los directorios secundarios versionados.
fuente
Este método debe manejar nombres de archivos que tengan cualquier número / combinación de espacios en ellos ...
Aquí hay una explicación de lo que hace ese comando:
Use el argumento -i para xargs para manejar la posibilidad de importar nombres de archivos con espacios en 'svn add' - básicamente, -i establece {} para usar como marcador de posición para que podamos colocar los "caracteres alrededor del nombre de archivo utilizado por 'svn añadir'.
Una ventaja de este método es que debe manejar nombres de archivos con espacios en ellos.
fuente
TortoiseSVN tiene esta capacidad incorporada, si está dispuesto a usar una solución que no sea de línea de comandos. Simplemente haga clic derecho en la carpeta de nivel superior y seleccione Agregar ...
fuente
Esto está documentado en svn book y es el más simple y funciona perfecto para mí.
http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.add.html
fuente
Utilizar:
fuente
svn status | cut -d ? -f 2 -s | xargs svn add
Yo siempre uso:
Copiar pegar
fuente
Dado que esta publicación está etiquetada como Windows, pensé en encontrar una solución para Windows. Quería automatizar el proceso e hice un archivo bat. Me resistí a hacer un console.exe en C #.
Quería agregar cualquier archivo o carpeta que no se haya agregado en mi repositorio cuando comienzo el proceso de confirmación.
El problema con muchas de las respuestas es que enumerarán los archivos no versionados que deben ignorarse según mi lista de ignorados en TortoiseSVN .
Aquí está mi configuración de gancho y archivo por lotes que hace eso
Script de gancho de tortuga:
svnadd.bat
fuente
Dentro de esta implementación, tendrás problemas en el caso de que tus carpetas / nombres de archivo tengan más de un espacio como el siguiente:
tales casos están cubiertos por simples:
fuente
Si usa Linux o usa Cygwin o MinGW en Windows, puede usar soluciones tipo bash como las siguientes. En contraste con otros similares presentados aquí, este tiene en cuenta los espacios de nombre de archivo:
fuente
Después de pasar un tiempo tratando de descubrir cómo agregar recursivamente solo algunos de los archivos, pensé que sería válido compartir lo que funcionó para mí:
Aquí va una explicación.
El primer comando agrega todos los directorios. El segundo comando agrega solo los archivos de acuerdo con los patrones especificados.
Déjame darte más detalles:
En el segundo comando, las únicas diferencias son el comando dir y el comando svn, creo que es lo suficientemente claro.
fuente
Puedes usar el comando
o
Si sus archivos / directorios no se agregan recursivamente. Entonces revisa esto.
La adición recursiva es propiedad predeterminada . Puedes ver en el libro SVN .
El problema puede estar en su lista de ignorados o en sus propiedades globales.
Tengo solución rastreador de problemas de google
Verifique las propiedades globales para ignorar la estrella (*)
TortoiseSVN > Properties
.svn:global-ignores with a value of *
star(*)
, ignorará la adición recursiva. Entonces elimine esta propiedad.Verifique el patrón de ignorar global para ignorar la estrella (*)
TortoiseSVN > Settings > General
.star(*)
, elimine esta propiedad.Este chico también explicó por qué esta propiedad agregó en mi proyecto.
La forma más parecida en que llegó allí es que alguien hizo clic derecho en un archivo sin ninguna extensión y seleccionó TortoiseSVN -> SVN Ignore -> * (recursivamente), y luego lo confirmó.
fuente
Puede ingresar el siguiente comando en Linux:
fuente
Como especificó Windows, donde awk & sed no son estándar:
o en un archivo por lotes:
fuente
Esta es la forma perezosa y peligrosa de sincronizar un directorio con SVN que incluye nuevos archivos:
Aunque esto puede funcionar en un apuro, también puede tener serias consecuencias. Por ejemplo, SVN a menudo perderá el rastro del historial de un archivo.
La forma ideal de sincronizar un directorio sería poder diferenciar y luego usar svn patch, sin embargo, esto se desvía de los formatos en el comando diff y el comando svn diff comparará las diferencias del directorio de trabajo en lugar de las diferencias en el nivel del sistema de archivos.
fuente
Creo que he hecho algo similar con:
pero no estoy seguro si mi memoria es correcta ;-p
fuente