2011-09-22 29 views
5

Tengo una rama SVN y un tronco. El tronco cambia regularmente y la rama no.SVN: ¿sincronizar la sucursal con el tronco en Eclipse?

De vez en cuando (digamos una vez por semana) Quiero actualizar la copia de trabajo local de la sucursal con los últimos cambios de la línea externa.

Idealmente, me gustaría hacer esto de la misma manera que lo hago con la última versión de la sucursal: con Eclipse: Team-> Sincronizar, por lo que puedo revisar todos los cambios antes de actualizar.

¿Esto también es posible con un repositorio diferente (por ejemplo: trunk)? En caso negativo, ¿cómo revisa la gente los cambios antes de actualizar?

Miré Team-> Merge, pero esto parece actualizar los cambios directamente a mi copia de trabajo, sin la posibilidad de revisar los cambios primero (la función de vista previa es confusa, creo, y no proporciona el buena vista de lado a lado de los cambios/conflictos que Synchronize tiene).

Respuesta

0

Compré tanto la rama como el tronco como proyectos de eclipse separados en el espacio de trabajo. Luego use alguna herramienta de fusión, por ejemplo meld para fusionar los cambios entre ellos. Después de la fusión, puede actualizar la rama en Eclipse y sincronizarla con el repositorio svn; ahora puede revisar todos los cambios. (es cómo lo hago, ya que no creo svn eclipse plugin;))

+0

No me gustó svn en Eclipse también, pero Subversivo es bastante agradable ahora. Incluso con un gran proyecto con miles de archivos, es utilizable (aunque no es rápido, una actualización a veces demora un par de minutos) – Dylan

6

La forma correcta de hacerlo es con Merge. Subclipse incluye un cliente de fusión que hace que esto sea fácil de hacer. Tiene razón en que no le da una vista previa verdadera, pero la forma en que funciona es mejor desde la perspectiva de Subversion. La interfaz de usuario de la vista Resultados de fusión es básicamente la misma que la vista Sincronizar. Le permite examinar fácilmente cada cambio que la fusión haya realizado en su copia de trabajo y el editor de comparación de Eclipse que abre hace que sea muy fácil quitar cualquier parte del cambio que no desee en su código antes de comprometerse.

El problema al tratar de hacer esto desde la vista Sincronizar es que luego se está fusionando usando editores de código y Subversion no tiene conciencia de lo que se fusiona. Si permites que Subversion haga primero la fusión, entonces puede actualizar todos sus metadatos correctamente y está perfectamente bien para que arregles el código como prefieras antes de confirmar los resultados de la fusión.

+1

decisión muy extraña para hacer la fusión primero y luego revisar los cambios ... no puedo creer que alguien pueda prefiero esto en lugar de revisar los cambios primero, antes de arruinar tu copia de trabajo ... Quiero ver lo que otras personas han hecho, ANTES de que quiera tener algo que ver con eso ... ahora tengo que limpiar el caos de otras personas cuando intento vea qué actualizaciones/bigfixes están disponibles ... – Dylan

+2

¿De qué manera siente que arruina su copia de trabajo? En general, no debería fusionarse en una copia de trabajo que tenga modificaciones no confirmadas. Si no le gusta el resultado de la fusión, hay una opción Deshacer que vuelve a colocar su copia de trabajo como estaba. Los cambios individuales pueden eliminarse fácilmente utilizando la opción Revertir. Me resulta muy extraño que alguien quiera revisar cada cambio en lugar de dejar que la herramienta haga el trabajo por ellos y luego revisar lo que hizo. –

+0

Quizás solo necesite acostumbrarme. Simplemente creo que es extraño fusionarse con la copia de trabajo y solo luego ver qué otras personas han cambiado. Solo quiero una manera fácil de ver todos los cambios venideros y ENTONCES decidir si necesito unirme ... – Dylan

0

Estoy de acuerdo que no es muy intuitiva por diseño, pero Mark tiene razón, "sincronizar" los cambios en la comisión de vuelta al tronco:

  • primero asegúrese de que su rama local está completamente sincronizado con su rama de repositorio (sin cambios)
  • Equipo ->Combinar ... su copia local de la rama con el tronco repositorio
  • ahora tiene una versión local de que fusionar
  • puede localmente editar esta versión, asegúrese de que las pruebas están trabajando y no hay errores de compilación
  • fin de sincronizar la versión local rama fusionada con la rama del repositorio y confirmar todos los cambios que se han hecho

además, de la misma manera podrás combinar su rama de vuelta en el tronco repositorio

  • asegúrese de que todos los cambios de su sucursal están comprometidos con la rama del repositorio interruptor
  • al tronco equipo -> Interruptor ...
  • fusionar el tronco con su equipo rama ->Combinar. .. (Tab 'Reintegración')
  • ahora tiene una versión local de la fusión, es posible editar los cambios y su correspondiente revisión, asegúrese de que tiene una versión de trabajo ahora
  • sincronizar el tronco local (versión fusionada) con el repositorio tr unk
  • confirmar todos los cambios que desea que aparezcan en el maletero

recomiendo a confirmar todos los cambios que ha realizado a nivel local para su combinación, ya que las hayas probado localmente. si comete algunos cambios, asegúrese de que la versión del repositorio aún esté funcionando y luego con los cambios que faltan

Cuestiones relacionadas