2012-10-02 59 views
9

Empecé a trabajar en lo que pensé que sería un pequeño cambio en el maletero, me fui durante un mes y ahora me doy cuenta de que este es realmente un proyecto secundario (lleno de errores) que realmente necesita su propia sucursal. Además, una vez que he desvinculado estos cambios, quiero restablecer mi copia de trabajo a lo que está actualmente en el tronco para poder ayudar con el esfuerzo de desarrollo principal y los elementos de alta prioridad antes de volver a este proyecto lateral cuando haya tiempo.¿Cómo ramifico una copia de trabajo modificada con SVN?

Así:

  1. me gustaría hacer una nueva rama, basado en mi copia de trabajo, sin tener que comprobar en mi copia de trabajo (que está al día con la última revisión HEAD sin embargo)

  2. Una vez que he bifurcado mi copia de trabajo, me gustaría básicamente eliminar todos los cambios que están en la rama, y ​​simplemente configurarlo para que coincida con la revisión HEAD actual en el tronco.

¿Cuál es el procedimiento? Estoy usando TortoiseSVN, pero incluso las instrucciones de la línea de comando serían útiles.

+0

Una pregunta similar [aquí] (http://stackoverflow.com/q/1308791/2047122) – Ashley

Respuesta

3

Así que he probado dos métodos de ramificación a mi copia de trabajo sin comprobar en ella, no está seguro de cuál va a terminar siendo el mejor método:

Método 1: Copiar directorio completo a la nueva rama

  • Haga clic derecho en la carpeta de copia de trabajo y elegir Tortoise SVN> navegador de repositorios
  • en Repo Examinador de crear un nuevo directorio llamado "ramas" al mismo nivel que dir "tronco"
  • Dentro de las "ramas" , crea un nuevo directorio con la "n ame "de su rama (por" nombre "me refiero a una etiqueta que identificará esta rama, por ejemplo: si está trabajando en un sistema de notificación especial en esta rama, llámelo" notificaciones ", etc.)
  • Ahora, aún en el navegador Repo, haga clic derecho y seleccione "Agregar carpeta" y seleccione su copia de trabajo local
  • Esto llevará un tiempo, ya que todos los archivos (incluidos .svn) se están copiando. Esto también copia los archivos y archivos no versionados que tiene svn: ignored, que pueden no ser deseados.

Método 2: Uso rama/etiqueta

  • Haga clic derecho en la carpeta de copia de trabajo y elegir Tortoise SVN> rama/etiqueta ...
  • Se abre el navegador de repositorios, por tanto, crear un nuevo directorio "ramas" y luego dentro de ese, un nuevo directorio con el "nombre" de su rama
  • Seleccione el botón "Copia de trabajo" en la sección "crear copia en el repositorio desde". Esto es lo que comprometerá la diferencia de sus cambios locales a esta rama
  • Esto parece copiar solo los archivos que son DIFERENTES de lo que está en la revisión HEAD.
  • Sin embargo, si a continuación, utiliza el navegador de repositorios de nuevo para ver lo que hay allí, toda la revisión HEAD + cambios locales son todos allí

Parece que el método 2 es definitivamente preferible.

Entonces, para limpiar, era una cuestión de Tortoise SVN> Volver ... y "Eliminar todo el versionado"

+0

El método 2 funcionó muy bien para mí: la interfaz de usuario es un poco diferente en 17 pero las instrucciones me ayudaron. – Conrad

3

En la línea de comandos puede crear un parche con el comando subversión "diff", y luego, aplíquelo a su nueva sucursal con el comando de subversión "parche". (Puede leer sobre estos comandos ejecutando 'svn help diff' y 'svn help patch'). Digamos que tiene el tronco y una rama llamada new_branch en el mismo directorio principal.

cd trunk 
svn diff > ..\my_stuff.diff 

Ahora tiene el parche, luego aplíquelo a su rama recién creada.

cd new_branch 
svn patch ..\my_stuff.diff 

Usted puede secar ejecutar el parche primero mediante la adición de la bandera --dry-run al comando de parche, para ver si algo extraño sucede antes de aplicarlo realmente.

svn patch ..\my_stuff.diff --dry-run 
+0

Cool. Pero parece que estás creando un archivo diff desde el repositorio troncal, no la copia de trabajo. ¿O estoy malinterpretando esto? –

+0

No el comando svn diff "muestra modificaciones locales en una copia de trabajo": http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.diff.html, así que obtengo mis cambios locales. – crunchdog

+1

Estoy interesado en su solución. Lo que parece que estás haciendo es parchear new_branch, por lo que se convierte en una copia de trabajo. Entonces, ¿cómo se obtiene new_branch en primer lugar? –

1

En caso de que prefiera para continuar trabajando en la misma carpeta, esto post muestra cómo.

Básicamente svn copy para crear una rama svn switch para apuntar a una nueva rama de la misma copia de trabajo y svn commit para confirmar los cambios.

Asegúrese de ramificar desde la misma bifurcación/revisión que comenzó a modificar (svn info para verificar) o puede terminar con muchos conflictos después del cambio.

+0

Quizás podría resumir esa publicación en su respuesta; de lo contrario, si ese enlace alguna vez muere, su respuesta será inútil para las personas futuras interesadas en su solución. –

Cuestiones relacionadas