Gente, aca les copio y adjunto el fuente con esto agregado, se trata de un documento ODT con la descripcion funcional de cada tipo de objeto. Decidi sacar los objetos PATCH para enriquecer los objetos COMMIT. Según mi forma de verlo, esto nos permitirá un manejo mucho mejor, agregando luego trackers firmados mediante DSA-ElGamal.
No me gusta enviar mensajes con formato porque se hacen difíciles de ver en algunos clientes de correo, prefiero el texto plano, pero quería copiar el documento tal cual para que quede en la lista también.
PD: Si hay algo que ven mal, corrijanme
Saludos,
--
Dario
---------------------
Objetos de S.A.F.A.
---------------------
A diferencia de GIT, los objetos de SAFA no guardan el tipo y tamaño al inicio ¿Porque? Porque podemos distinguir el tipo: Si es un TREE, estara en .safa/trees; si es un BLOB, en .safa/blobs; si es un COMMIT, en .safa/commits; y si es un subtipo, estará tipado.
Estos son ejemplos de objeto. Los datos no son reales y no funcionaran en un repositorio real, pero así es como luce. Los SHA-1 fueron abreviados.
OBJETO TREE
Nombre del archivo: Su propio SHA1
Directorio: .safa/trees
Contenido: Subtipo TREE, Directorios, Archivos con su SHA-1
|
TYPE |
TREE |
|
|
0777 |
directorio1 |
|
|
0755 |
directorio1/subdir1 |
|
|
0755 |
directorio1/subdir2 |
|
|
linea en blanco |
||
|
0755 |
directorio1/subdir1/archivo |
fb3a8bdd0ceddd019615af4d57a53... |
OBJETO DELTA-TREE
Nombre del archivo: Su propio SHA1
Directorio: .safa/trees
Contenido: Subtipo DELTA-TREE, TREE BASE sobre el que se aplica el parche, modificaciones a la lista de directorios, modificaciones a la lista de archivos con su SHA-1
|
TYPE |
DELTA-TREE |
||
|
BASE |
|
||
|
- |
0777 |
directorio1/subdir2 |
|
|
linea en blanco |
|||
|
+ |
0755 |
directorio1/subdir1/otro |
257a84d9d02e90447b149af58b271... |
El resultado de esto es que se puede tomar el TREE de base, la lista de cambios del TREE tipo DELTA, y aplicarlos.
La utilidad de abstracción de subtipo de TREE es safa-cat-tree, que permite leer TREEs y DELTA-TREEs de forma indistinta.
OBJETO BLOB
Nombre del archivo: Su propio SHA1 más una posible extensión indicando compresión.
Directorio: .safa/blobs
Contenido: Es exactamente un archivo tomado tal cual de la estructura de directorios (como si se hubiera hecho un 'cp'). Es un archivo, no un Inodo, por eso los permisos se guardan en el TREE que lo referencia, contando que un cambio de permisos se puede versionar, y el archivo quedará intacto (hablamos del mismo BLOB). Si lleva extensión '.gz' se debe descomprimir.
OBJETO COMMIT
Nombre del archivo: El SHA1 del TREE o PATCH al que apunta
Directorio: .safa/commits
Contenido: Su propio SHA1, SHA1 de un TREE (si aplica), SHA1 de un PATCH (si aplica), SHA1 del camino con un nivel más de abstracción, nombre del COMMIT anterior al mismo (PARENT, es NIL si es el primero), ID del Autor, Fecha y hora de la autoría, Abstracción y camino más abstracto (si aplican), Titulo, Mensaje.
|
SHA-1 |
|
|
|
PARENT |
|
|
|
PATCH |
(solo si aplica) |
|
|
TREE |
(solo si aplica) |
|
|
AUTHOR |
da...@safa-dev.org |
02-APR-2012 23:34:22 -0300 |
|
ABSTRACTION |
(si aplica, el sha1 del camino 1 nivel más abstracto) |
|
|
CURRLEVEL |
(si aplica, el nivel de abstracción actual) |
|
|
TITLE |
|
|
|
linea en blanco |
||
|
Aqui va el mensaje del Commit, esta parte es la que describe lo que se hizo en el Commit, en los commits abstractos hablamos de descripciónes más funcionales como 'Correccion de formato de mensajes', cuando en realidad pueden haber cientos de commits que creaban funciones y las implementaban, hacian correcciones y demás. No perdemos esos commits, solo los salteamos en el log. |
||
--
--------------------
Recibes esto porque estas suscrito a "safa-dcs" en GoogleGroups.
Puedes enviar correo a: safa...@googlegroups.com
Para desuscribirte, envia un correo a: safa-dcs+u...@googlegroups.com
Mas info: http://groups.google.com/group/safa-dcs
S.A.F.A. - More than just version controlling
no llego a entender el campo abstracto del objeto commit.
No es suficiente con el parent para indicar el camino?