2011-02-15 12 views
14

Durante la refactorización, a veces tengo que dividir un archivo fuente en dos o más (por ejemplo, cuando una clase se ha vuelto tan grande que debe dividirse en dos clases).Dividir archivos manteniendo el historial en SVN

Por ejemplo, deje que A sea el archivo original y B1 y B2 los archivos nuevos.

¿Es posible decir SVN que B1 y B2 debe tanto "heredar" la historia completa del archivo de A, por lo que cuando miro a ambos los registros de la historia de B1 y B2, que se puede ver que han sido surgido de a, y los registros de un aspecto como este:

A    B1     B2 
- change A3  - change B1.2  - change B2.2 
- change A2  - change B1.1  - change B2.2 
- change A1  - change A3   - change A3 
       - change A2   - change A2 
       - change A1   - change A1 

que saben cómo mantener la historia cuando se cambio el nombre de un archivo (como discutido here on SO), pero que yo sepa que es solamente una manera de mantener la historia de un asociado con cualquiera B1 o B2, no ambos.

Actualmente estoy usando Tortoise SVN 1.6.12 en Windows.

+3

Esta pregunta es una metáfora de las líneas de tiempo divergentes en el viaje en el tiempo, ¿verdad, Doc? –

+0

@ACK_stoverflow: me tienes ;-) –

Respuesta

22

Simplemente haga 2 copias SVN de archivo A y luego eliminar el archivo SVN A.

acabo de hacer una prueba rápida con una nueva operación y parece que funciona perfectamente.

  1. creé archivo A.txt con dos clases B1 y B2 en el interior y el archivo comprometidos a.txt
  2. Hice una copia de SVN A.txt a B1.txt y retire la declaración de la clase B2 de B1 .txt
  3. me hizo otra copia de sVN A.txt a B2.txt y retire la declaración de la clase B1 de B2.txt
  4. I sVN eliminado A.txt
  5. Comprometidos todo y la historia se ve bien.
+7

Observación: hacer una copia de un archivo usando TortoiseSVN se hace más fácilmente arrastrando el archivo con el botón derecho. Un menú contextual mostrará algunas opciones como SVN copy y SVN move, con la posibilidad de renombrar simultáneamente. – jbvo

+0

¿Hay alguna manera de hacer SVN Copy pro gramáticamente desde el código .Net? Necesito hacer los pasos anteriores de forma automática. La detección de clases en los archivos y su tratamiento se puede realizar semánticamente utilizando Microsoft Roslyn (para el código .Net). –

Cuestiones relacionadas