He sido extremadamente travieso. He estado desarrollando una pieza de software (soy el único desarrollador) por un tiempo (O.K., es en el transcurso de algunos años), pero no he usado ningún tipo de control de fuente.¿Cómo convierto copias de seguridad de proyectos simples no controladas por código fuente en un repositorio git versionado?
He decidido utilizar el control de código fuente (parece más probable que git, ya que las herramientas de Windows parecen haber aparecido mucho en los últimos meses) a partir de ahora. Lo que sí tengo son copias de seguridad fechadas de todo el directorio de mi solución (.NET).
Lo que me gustaría hacer es automágicamente tener mis copias de seguridad visibles en el historial de revisiones. Será desordenado Los proyectos y archivos se agregarán/eliminarán en el transcurso del historial de soluciones. No me molestan estos problemas, como lo que sé que los archivos renombrados se interpretan como la eliminación de un archivo y la adición de uno nuevo, no relacionado.
De manera más general, mi problema es: tengo pedidos de copias de un directorio cambiante. Importar el primero en git es fácil, supongo. Pero, entonces, quiero que todas las copias posteriores del directorio se combinen, en orden de fecha, de a una por vez sin que tenga que enviar cada subdirectorio y archivo individualmente.
¿Es esto posible, o es solo que me castigan por no usar el control de fuente desde el principio?
Editar: Si sigo adelante con el método 'commit all snapshots individual' manualmente (hay menos de 20 instantáneas), ¿hay alguna manera (como Esko Luontola sugiere que yo desee) de anular las fechas de confirmación con el fechas que tengo para la instantánea. git commit no parece tener una bandera para permitir esto. ¿Hay alguna otra forma (estoy usando Vista)?
Editar: En respuesta a mi problema de utilizar las fechas originales: Debe establecer las variables de entorno GIT_AUTHOR_DATE y/o GIT_COMMITER_DATE para anular el uso de las fechas y horas actuales al realizar la confirmación.
La razón por la que hay dos conjuntos de variables (también hay GIT_ (AUTHOR | COMMITER) _ (NAME | DATE | EMAIL)) es para distinguir entre, por ejemplo, el autor que envía un parche y el mantenedor que está en realidad haciendo los commits en el repositorio.
Nota si se usan extensiones git en VS: si establece (export varname = "value") estas variables usando la línea de comando 'git bash', y luego vuelve a la GUI para hacer un commit, parece ignorar ellos. Tienes que mantenerte en la línea de comando y ejecutar 'git commit' desde allí.
¿Te gustaría tener también las fechas reales en el repositorio de Git? Al menos hicieron algo así cuando movieron 20 años de historia de Perl a Git: http://github.com/blog/276-perl-mirror-on-github –
No es relevante: mover el historial de Perl a Git fue importar desde Perforce –