2010-04-25 16 views
8

Cuando alguien pregunta qué hacer con el código que ya no es necesario, la respuesta suele ser "delete it, restore it from source control if you need it back".¿Cómo encuentro el código útil eliminado previamente pero todavía almacenado en el control de código fuente?

Ahora, ¿cómo puedo encontrar esa pieza de código fuente en el repositorio? Limitemos el alcance a SVN por simplicidad: sospecho que usar cualquier otro sistema de control de fuente no hará mucha diferencia en este aspecto (corríjanme si estoy equivocado).

Si elimino ese código y confirmo los cambios, ya no estará en la revisión más reciente. ¿Cómo lo encuentro sin exportar cada revisión y buscar a fondo (lo cual es casi imposible)?

+0

La respuesta a esto depende de VCS, VSS, CVS, SNV, TFS, ClearCase, ... cada uno tendrá su propia respuesta. – Richard

+5

@Richard: está etiquetado como 'svn' y dice *" Limitemos el alcance a SVN ... "* en el texto. –

Respuesta

3

La respuesta más correcta es.Existen métodos para ayudarle con esa tarea, pero es imposible hacer la automática, debido a que:

  • usted no sabe qué archivos se encuentra en
  • no conoce el código fuente o partes de él
  • no recuerda cuándo se eliminó el código.
  • ...

un equipo no puede leer nuestras mentes. Dicho esto, hay, por supuesto, otras herramientas que te pueden ayudar, como las mencionadas, o interfaces gráficas como trac (que me gusta mucho para ese propósito).

3

La forma en que lo hago es pensar en una fecha en la que sabía que el código faltante estaba activo y buscar todo el árbol de código fuente tal como estaba en esa fecha. Si obtengo la fecha incorrecta, voy a x día/semanas/meses a cada lado hasta que empiece a cero.

svn checkout --revision {2002-02-17} 
5

Debes utilizar una herramienta diferente, la mayoría de los repositorios svn la tienen. Haga clic con el botón derecho en el archivo que desea revertir y elija 'diff' o 'difference' o similar (gasto en implementación) y luego le pedirá que compare la versión actual con una versión anterior, si conoce la fecha aproximada de la versión anterior luego elija esa versión (los sellos de fecha/hora son generalmente obvios) y verá las dos versiones una al lado de la otra. A continuación, puede elegir qué bits son diferentes (generalmente de color rojo) haga clic derecho sobre ellos y elija integrarlos.

La herramienta de cliente que está utilizando para SVN determinará los detalles.

4

Otra forma es buscar en los mensajes de registro - que supuestamente dejó un comentario un tanto a lo largo de las líneas de:

funcionalidad XYZ Eliminado

cuando se realizó el cambio.

+0

Este es un caso de uso que me ayuda a enseñar a los juniors lo importante que es usar mensajes de compromiso descriptivos. Uno tiene que experimentar el dolor de encontrar algo en la historia al menos una vez, antes de que se hunda. – Ether

2

Presumiblemente, los comentarios de código o comentarios de la revisión tienen palabras clave para orientar el fragmento de código que busca:

SVN consultas - http://svnquery.tigris.org/

"SvnQuery es un motor de búsqueda de texto completo rápido para repositorios de subversión . se busca en cada archivo en cada revisión. No sólo el contenido de un archivo está indexado, sino también su metadatos completa como camino, autor, co mments y propiedades. Se proporciona una interfaz web simple, similar a Google, pero se espera que la biblioteca de consultas y el mecanismo de indexación se puedan reutilizar en otras interfaces, p. un servicio web o un complemento de Visual Studio.

SvnQuery se implementa en C# 3.0 y ASP.NET se utiliza para la interfaz web. Lucene.Net realiza la búsqueda de texto completo, que ofrece un rendimiento sorprendente. No se puede: ..."

El lenguaje de consulta se describe aquí:
http://svnquery.tigris.org/servlets/ProjectProcess?pageID=o0dpdE&freeformpage=SvnWebQueryHelp

0

Sospecho que usar cualquier otro sistema de control de fuente no hará mucha diferencia en este aspecto (corríjanme si me equivoco).

Esto está mal. El control de versiones distribuidas (por ejemplo, git o hg) puede hacer esto de manera relativamente eficiente.

En git, por ejemplo, para encontrar una función eliminada llamada foo, puede hacer git log -S foo, que mostrará todas las confirmaciones que agreguen o eliminen líneas que contengan "foo".

Si quiere seguir con la limitación arbitraria de SVN por alguna razón, clone el repositorio SVN con git-svn primero.

Cuestiones relacionadas