Pregunta

No utilicé el hotcopy para hacer una copia de seguridad de mi repositorio de Subversion. Utilizamos Visual SVN Server (último) con tortuga. Copié C: \ Repositorios y lo respalde hace unos días y ahora quiero restaurarlo.

Ahora puedo utilizar el repositorio con la copia de seguridad de la carpeta del repositorio copiada.

y luego supongo que ahora he revisado manualmente el proyecto local de todos en el equipo para ver quién tiene la revisión final. Si es así, eso me llevará horas.

Alguien sabe si esta es la forma correcta o única? ¿Es realmente este manual? Supongo que sería porque todos tienen diferentes cambios a nivel local.

¿Fue útil?

Solución

¿Qué tal este enfoque, cada desarrollador:

  1. ¿TortoiseSVN - > Exportar su copia de trabajo ahora no válida a una ubicación temporal
  2. Obtiene una nueva compra del repositorio restaurado
  3. Copia la copia de trabajo exportada (es decir, sin directorios .svn), sobre la parte superior de la nueva copia de trabajo
  4. Actualiza y confirma como de costumbre

Tenga en cuenta que puede obtener más conflictos de fusión de lo habitual, pero se pueden resolver de la manera habitual.

Otros consejos

Cualquier cambio que se haya realizado ya que la copia de seguridad no está presente en el repositorio, y todos tendrán que realizar un nuevo pago desde el repositorio restaurado. (Los números de revisión han cambiado, y tendrá un desastre si no lo hace).

En cuanto a salvar cualquier cambio de las copias locales del desarrollador, sí, será bastante manual. Sin embargo, "diff" y "parche" son tus amigos. Si no está familiarizado con cygwin, querrá obtener eso y obtener los paquetes diff, patch, diffutils y patchutils para que tenga el comando 'diff' y el comando 'patch'. Puede usar el " diff " comando para crear un archivo que contenga el delta entre una copia del árbol de origen y otra. Querrás usarlo así:

diff -urN --exclude=.svn fresh_check_from_new_repo old_working_copy > developer1changes.patch

Haga eso para la copia de trabajo de cada desarrollador. Puede tomar esos archivos y aplicar los cambios a un nuevo pago utilizando el parche " comando como este:

cd working_copy
patch -p1 -i ...../developer1changes.patch

Ahora tendrá una copia de trabajo con sus cambios. (Aunque sin sus svn add, svn rms y cambios de propiedad). A partir de ahí, determine qué se debe comprometer.

Puede usar el " filterdiff " Comando para tomar el archivo de parche y filtrar partes de los cambios, canalizar eso para parchar, y aplicará solo esos cambios.

editar: Otra opción: para cada desarrollador, cree una rama y pague esa rama, luego copie su copia local sobre los archivos en esa nueva copia de trabajo y confirme.

Eso consigue todo el trabajo en el repositorio donde no se perderá. Luego tendrá que lidiar con conflictos cuando intente fusionar las ramas en el tronco. En ese punto, debería poder usar las herramientas de interfaz gráfica de usuario para seleccionar qué cambios guardar o tirar.

Pero la respuesta corta es: tienes mucho trabajo por hacer ya que no tienes una copia de seguridad muy reciente del repositorio ... así que una vez que puedan volver a trabajar, configuren mucho más programa de respaldo frecuente.

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