manejar versiones de archivos en un arbol en c++

Iniciado por nico_147, 6 Diciembre 2015, 01:35 AM

0 Miembros y 1 Visitante están viendo este tema.

nico_147

Tengo que crear version, borrar version , mostrar version y mostrar cambios.

Esto es lo que tengo que hacer:
Crear una nueva versión.

TipoRet CrearVersion(Archivo &a, char * version);

Crea una nueva versión del archivo si la versión especificada cumple con las siguientes reglas:

- El padre de la nueva versión a crear ya debe existir. Por ejemplo, si creo la versión 2.15.1, la versión

2.15 ya debe existir.

Las versiones del primer nivel no siguen esta regla, ya que no tienen versión padre.

- No pueden quedar "huecos" entre versiones hermanas. Por ejemplo, si creamos la versión 2.15.3, las

versiones 2.15.1 y 2.15.2 ya deben existir.

Si la versión especificada ya existe, entonces se inserta haciendo que los hermanos (las versiones

hermanas) se corran una posición a la derecha (aumentando una unidad). Por ejemplo si existen las

versiones 2.15.1, 2.15.2 y 2.15.3, y creo la 2.15.2, las versiones 2.15.2 y 2.15.3 existentes pasan a ser

2.15.3 y 2.15.4 respectivamente, para poder incorporar la versión 2.15.2 nueva (este corrimiento influye

en la numeración de todos los hijos –las subversiones– de las versiones afectadas).

Cada subversión de una versión X de un archivo incorpora, eventualmente, cambios (inserción y/o

supresión de líneas) a la versión X. Ver las operaciones relativas al texto que se describen más adelante

en este documento.

Ejemplo:

CrearVersion(a, "1");

CrearVersion(a, "2");

CrearVersion(a, "2.1");

MostrarVersiones(a);

Salida:

curriculum.txt

1

2

2.1

Retornos posibles:

OK Si se pudo crear la nueva versión con éxito.

ERROR Si la versión padre no existe (ver arriba).

NO_IMPLEMENTADA Cuando aún no se implementó. Es el tipo de retorno por defecto.

4) Borrar una versión,  junto con sus hijos (subversiones), liberando toda la memoria involucrada.

TipoRet BorrarVersion(Archivo &a, char * version);

Elimina una versión del archivo si la version pasada por parámetro existe. En otro caso la operación

quedará sin efecto. Si la versión a eliminar posee subversiones, éstas deberán ser eliminadas también, así

como el texto asociado a cada una de las versiones. El texto será explicado más adelante.

No deben quedar números de versiones libres sin usar. Por lo tanto cuando se elimina una versión, las

versiones hermanas que le siguen deben decrementar su numeración (así también sus subversiones

dependientes). Por ejemplo, si existen las versiones 2.15.1, 2.15.2 y 2.15.3, y elimino la 2.15.1, la

Si las subversiones anteriores del mismo padre no existen (ver arriba).

versión 2.15.2 y la 2.15.3 pasan a ser 2.15.1 y 2.15.2 respectivamente, esto incluye a todas las

subversiones de estas versiones.

Si el archivo posee únicamente una versión (la 1), al eliminarla el archivo quedará vacío como cuando

fue creado, es decir, únicamente con su nombre y contenido nulo.

Ejemplo:

BorrarVersion(a, "1");

MostrarVersiones(a);

Salida:

curriculum.txt

1

1.1

Retornos posibles:

OK Si se pudo eliminar la versión con éxito.

ERROR Si version no existe.

NO_IMPLEMENTADA Cuando aún no se implementó. Es el tipo de retorno por defecto.

5) Mostrar todas las versiones de un archivo de forma jerárquica.

TipoRet MostrarVersiones(Archivo a);

FORMATO: En primer lugar muestra el nombre del archivo. Después de una línea en blanco lista todos

las versiones del archivo ordenadas por nivel jerárquico e indentadas según muestra el siguiente ejemplo

(cada nivel está indentado por un tabulador).

Ejemplo:

CrearVersion(a, "1.2");

CrearVersion(a, "2");

CrearVersion(a, "1.2.1");

MostrarVersiones(a);

Salida:

curriculum.txt

1

1.1

1.2

2

1.2.1

Si el archivo no contiene versiones se mostrará la siguiente salida.

Salida:

curriculum.txt

No hay versiones creadas

Retornos posibles:

OK Siempre retorna OK.

ERROR No existen errores posibles.

NO_IMPLEMENTADA Cuando aún no se implementó. Es el tipo de retorno por defecto.

Mostrar todas las modificaciones en el texto de una versión X, respecto a la versión padre de X.

TipoRet  MostrarCambios(Archivo a, char * version);

Esta función muestra los cambios que se realizaron en el texto de la version parámetro, sin incluir los

cambios realizados en las versiones ancestras de la cual dicha versión depende.

FORMATO: En primer lugar muestra el nombre del archivo. Luego, separado por un guión se mostrará

la version. Después de una línea en blanco lista todos los cambios realizados al texto. Cada cambio se

muestra en una nueva línea. Si es una inserción comenzará con IL y si es un borrado con BL. Luego

separado por un tabulador se mostrará el número de la línea modificada y, sólo en el caso de una

inserción, luego de otro tabulador el texto insertado.

Ejemplo:

MostrarCambios(a, "1");

Salida:

curriculum.txt - 1

IL 1 Dirección: Rivera 1234

IL 2 Teléfono: 6111111

IL 1 Nombre: Juan Pérez



MostrarCambios(a, "1.1");

Salida:

curriculum.txt – 1.1

IL 4 Estado Civil: Soltero

BL 3

BL 3

Si la versión no contiene modificaciones se mostrará la salida indicada en el siguiente ejemplo.

Ejemplo:

MostrarCambios(a, "2");

Salida:

curriculum.txt – 2

No se realizaron modificaciones

Retornos posibles:

OK Si se pudieron mostrar los cambios, aún cuando éstos sean inexistentes.

ERROR Si version no existe.

NO_IMPLEMENTADA Cuando aún no se implementó. Es el tipo de retorno por defecto.

muchas gracias.