Pregunta

Me mudé de TFS a SVN (TortoiseSVN) con mi empresa actual.Realmente extraño la función "Shelve" de TFS.He leído varios artículos sobre cómo "dejar de lado" con SVN, pero no he leído nada que brinde una experiencia muy simple para "dejar de lado" el trabajo.

Idealmente, me gustaría agregar elementos adicionales al menú contextual de TortoiseSVN: "Guardar" y "Desarchivar"."Shelve" eliminaría el conjunto de estanterías actual y cargaría el directorio de trabajo en una ruta adecuada definida por las opciones del usuario."Unshelve" fusionaría el conjunto con la copia de trabajo.

Existe algo como esto?¿Alguien puede sugerir alguna forma de "piratear" esta función en la GUI?

Nota:El siguiente enlace realmente no logra la experiencia de usuario que estaba buscando:

Subversión de estanterías

Una de las mejores cosas de TFS Shelve es lo fácil que es de usar...

¿Fue útil?

Solución

La estantería en SVN está comenzando a implementarse con la versión 1.10, consulte Notas de lanzamiento

Otros consejos

No creo que SVN tenga esta característica integrada en el producto del servidor.Tampoco creo que nada como esto haya sido emulado en ningún cliente que haya usado, incluido TortoiseSVN.

Para solucionar este problema, he recurrido al uso de un DVCS como git o Mercurial, para permitirme bifurcar/fusionar/archivar localmente antes de enviar el contenido de regreso a SVN.Podría decirse que es un poco complicado, pero funciona muy bien.

Si comprende cómo funcionan las sucursales SVN, emular Shelve en SVN es una obviedad:

  1. Crea una rama en el repositorio (en el servidor)
  2. Cambie su copia local a ella
  3. Confirme sus cambios en la nueva rama.
  4. Cambie su copia local nuevamente al baúl

Cuando esté listo para volver a los cambios archivados ("unshelve"), simplemente fusione la rama del estante con su copia local.

Si no conoces el SVN de línea de comandos ni el SVN de Tortoise lo suficientemente bien como para hacer lo anterior, aquí tienes una instrucción paso a paso súper detallada sobre cómo hacerlo en Tortoise SVN:

  1. Realice la "Actualización SVN" para actualizar su copia de trabajo a la última versión del tronco.De esta manera, las únicas diferencias entre su copia local y la troncal son sus cambios.
  2. En el menú contextual seleccione "Sucursal/Etiqueta"
  3. La opción "Versión HEAD en el repositorio" está seleccionada de forma predeterminada.Guarda eso.
  4. Cambie la "URL de destino" para especificar el nombre de la sucursal, p. http://server/repository/project1/branches/shelf1
  5. Marque la casilla "Cambiar copia de trabajo a nueva rama/etiqueta".
  6. Haga clic en Aceptar para crear la rama y cambiar a ella.
  7. Haga "SVN Commit..." y confirme sus cambios en la rama recién creada
  8. En el menú contextual, seleccione "Cambiar..."
  9. Cambie "A URL" por la URL troncal, p. http://server/repository/project1/trunk
  10. Haga clic en Aceptar para volver al maletero.

Consulte este enlace para obtener aún más detalles y el equivalente en línea de comandos de lo anterior:
Estantes en subversión

Otra opción es utilizar la función 'Crear parche' en TortoiseSvn para crear un archivo de parche y revertir los cambios.El archivo de parche se puede volver a aplicar más tarde para volver a donde estaba.

Sin embargo, es posible que aún termines con algunas fusiones persistentes si tienes que actualizar la revisión de la copia de trabajo.

SVN ha mejorado las estanteríashttps://subversion.apache.org/docs/release-notes/1.11.html#shelving

Los tipos de cambio que puede archivar son cambios comprensables en archivos y propiedades, excepto los siguientes tipos que aún no se admiten:

  • copias y movimientos
  • crear y eliminar directorios

Puedes usar un DVCS pero en cierto modo esto es una pifia.'Shelving' en un DVCS almacena sus cambios solo localmente.Es útil sólo si desea marcar su trabajo para revertirlo si lo interrumpe con más trabajo, pero preferiblemente querrá guardar su trabajo en el servidor.

Una forma de hacer esto en SVN sin un comando shelve explícito es cambiar su copia de trabajo a una ubicación svn diferente y confirmarla allí en lugar de en su repositorio principal.Esto es efectivamente como crear una rama temporal y trabajar en ella mientras dure su trabajo.No creo que tengas que fusionarte, ya que SVN lo hará por ti cuando cambies, ya que tus modificaciones locales se conservarán.

Desafortunadamente, no puedes cambiar a una ubicación que no existe, por lo que la primera vez que hagas esto, tendrás que crear la "rama" a la que archivar.Supongo que todo podría automatizarse.

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