¿Debería eliminarse el código antiguo / henetworkingado / no utilizado del repository de control de origen?

Me he encontrado con esto en múltiples proyectos. A medida que evoluciona la base de códigos, algunas bibliotecas, aplicaciones y componentes se abandonan y / o quedan obsoletos.

  1. La mayoría de las personas prefiere mantenerlos dentro. El argumento habitual es que el código realmente no ocupa espacio, puede dejarse en blanco hasta que se vuelva a necesitar.
    Así que un repository se convierte lentamente en un pozo negro de código henetworkingado, donde es difícil encontrar algo.
    Otro argumento para mantener el viejo código es que la gente nueva no tendrá la tentación de intentar implementar algo que se implementó en el pasado, pero que no funcionó del todo.

  2. Algunas personas eliminan el código anterior, ya que crea confusión, genera más preguntas para las personas nuevas y, de todos modos, puede restaurar cualquier instantánea anterior de la base de códigos.
    Sin embargo, no siempre se puede encontrar el código anterior si no se sabe dónde search, ya que ninguno de los VCS (comunes) que conozco ofrecen búsquedas en todo el repository, incluidas todas las revisiones históricas, y la única forma de search en los files antiguos es verificar la revisión donde existe el file eliminado.

¿Cuál sería un buen enfoque para la gestión de repositorys?

  1. Eliminarlo Es desorder – si no sirve un punto o es confuso, es mejor que se vaya.
  2. git grep o similar.

El código no utilizado ocupa espacio en las mentes de las personas . El código innecesario e innecesario desordera los models mentales de las personas y hace que sea más difícil entender para qué está todo en el repository ( "oh, no te preocupes por eso, ya no lo usamos más" ). Es bueno borrar el código del repository en estas circunstancias, pero puede ser útil documentar (en una wiki o similar) qué aplicaciones / componentes / etc antiguos se han eliminado, por qué se eliminaron y dónde se pueden encontrar.

Tenemos una twig a la que copymos las bibliotecas y proyectos obsoletos antes de eliminarlos del tronco.

 repo +- trunk +- tags | +- old-code | +- project1 | +- project2 | ... +- branches 

Sin embargo, para ser honesto, no puedo pensar en un momento en el que volvemos a un viejo proyecto y lo resucitamos …

En mi repository personal de Subversion, que está lleno de proyectos abandonados, muevo cosas que no quiero ver más en un directory / ático. También podría borrarlos, pero a costa de un directory adicional en la raíz de múltiples proyectos, no tengo que search en la historia cuando quiero encontrar algo que pensé que ya no necesitaba.

Branch el código original. Limpiar el maestro / troncal y las versiones futuras.

El código henetworkingado está ahí para quien lo necesite o no.

En cuanto a search el file, sé que git puede hacer esto. Pero, en general, solo busca los loggings de confirmación de cualquier repository

 git log --all -- legacyfile 

Luego encuentra el file en la twig:

 git branch --contains $filehash 

edit Solo quería agregar que en varias ocasiones tuve la necesidad de volver y encontrar files en otros proyectos que eran considerablemente antiguos, 5 o 10 años más o less. Estaba muy agradecido de que todavía estuviera allí.

Eliminarlo Si no tiene testings, ni siquiera sabes si todavía funciona. Si hay algunas partes que sean útiles, extráigalas. El código antiguo siempre te detiene. Si no puede rebuild fácilmente la funcionalidad que tenía en el código anterior, o bien no debería haberla reemplazado, o su nuevo código no es bueno.

Para proyectos que traen nuevos miembros: Cuantos más códigos tenga, más time le tomará aprender las strings, y más difícil será hacer cambios. Cruft solo causará confusión. El código antiguo solo tendrá sentido para aquellos que existían cuando funcionó.

Para mis proyectos personales, tengo la costumbre de mover ideas fallidas a una carpeta _archive . Esa carpeta solo sirve como reference, e bashs posteriores. Si los proyectos de consumo masivo fueran eliminados inmediatamente para minimizar el tamaño de la base del código.