Estoy creando mi primer proyecto en Subversion . Hasta ahora tengo
branches
tags
trunk
Creo que inmediatamente necesito hacer que las ramas sean singulares y comenzar de nuevo. Actualizar ramas es la norma.
He estado trabajando en el tronco y moviendo el contenido a las etiquetas de la siguiente manera.
mkdir tags/1.0
cp -rf trunk/* tags/1.0
svn add tags/1.0
svn commit -m " create a first tagged version"
Mi instinto me dice que esto está totalmente mal, y que debería mantener alguna relación entre los archivos que utilizo svn copy
. Los archivos que creo de esta manera no tendrán relación entre sí, y estoy seguro de que perderé las funciones de Subversion. ¿Estoy en lo correcto?
¿Debo usar svn copy para los archivos individuales?
mkdir tags/1.0
svn add tags/1.0
svn copy trunk/file1 tags/1.0
svn copy trunk/file2 tags/1.0
svn copy trunk/file3 tags/1.0
svn commit -m " create a first tagged version"
¿Debo usar svn copy en todo el directorio?
svn copy cp -rf trunk tags/1.0
svn commit -m " create a first tagged version"
Respuestas:
Tiene razón en que no es "correcto" agregar archivos a la carpeta de etiquetas.
Has adivinado correctamente que
copy
es la operación a utilizar; permite a Subversion realizar un seguimiento del historial de estos archivos y también (supongo) almacenarlos de manera mucho más eficiente.En mi experiencia, es mejor hacer copias ("instantáneas") de proyectos completos, es decir, todos los archivos desde la ubicación de extracción de raíz. De esta forma, la instantánea puede sostenerse por sí sola, como una representación real del estado del proyecto completo en un momento determinado.
Esta parte de "el libro" muestra cómo se usa típicamente el comando.
fuente
Utilizar:
Taquigrafía:
fuente
Como señaló @victor hugo, la forma "adecuada" es usar svn copy. Sin embargo, hay una advertencia. La "etiqueta" creada de esa manera no será una etiqueta verdadera, será una copia exacta de la revisión especificada, pero será una revisión diferente en sí misma. Entonces, si su sistema de compilación utiliza la revisión svn de alguna manera (por ejemplo, incorpora el número obtenido con 'svn info' en la versión del producto que construye), entonces no podrá construir exactamente el mismo producto desde una etiqueta (el El resultado tendrá la revisión de la etiqueta en lugar de la del código original).
Parece que, por diseño, en svn no hay forma de crear una metaetiqueta verdaderamente adecuada.
fuente
echo "{ 'svnRev': \"`svn info | awk '/Last Changed Rev:/{print $4}'`\" }" >svnver.txt
`awk
y obtener esa información directamente de svn usando la--show-item
opción:svn info --show-item last-changed-revision
Solo usa esto:
(todo en una línea, por supuesto). Siempre debe hacer una rama de toda la carpeta troncal y el contenido. Por supuesto, es posible ramificar sub-partes del tronco, pero esto casi nunca será una buena práctica. Desea que la rama se comporte exactamente como el tronco ahora, y para que eso suceda, debe ramificar todo el tronco.
Vea un mejor resumen del uso de SVN en mi blog: SVN Essentials y SVN Essentials 2
fuente
Podría usar tortuga:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html
fuente
@victor hugo y @unwind son correctos, y la solución de victor es, con mucho, la más simple. Sin embargo, CUIDADO con los elementos externos en su proyecto SVN. Si hace referencia a bibliotecas externas, la referencia de revisión externa (ya sea una etiqueta, HEAD o número) permanecerá sin cambios cuando etiquete directorios que tienen referencias externas.
Es posible crear una secuencia de comandos para manejar este aspecto del etiquetado, para una discusión sobre ese tema, consulte este artículo de SO: Etiquetado de un pago SVN con elementos externos
fuente
Otra opción para etiquetar un repositorio Subversion es agregar la etiqueta a la propiedad svn: log de esta manera:
Recientemente comencé a pensar que esta es la forma más "correcta" de etiquetar. De esta forma no crea revisiones adicionales (como lo hace con "svn cp") y aún puede extraer fácilmente todas las etiquetas usando grep en la salida de "svn log":
Además, de esta manera puede eliminar etiquetas sin problemas si es necesario. Entonces las etiquetas se convierten en una metainformación completa, y me gusta.
fuente
Todo lo que tienes que hacer es cambiar la ruta de la URL. Este comando creará un nuevo directorio "tagDestination". La segunda línea le informará los detalles completos del error si ocurre alguno. Cree la variable svn env si no se creó. Puede verificar (Cmd: - set, Powershell: - Get-ChildItem Env :) La ruta predeterminada es "C: \ Archivos de programa \ TortoiseSVN \ bin \ TortoiseProc.exe"
fuente
Prueba esto. Esto funciona para mi:
fuente