consideran este código Python sencilla, lo que demuestra un diseño muy simple de control de versiones para un Dictonary:¿Cómo se almacenan y calculan los historiales de control de versiones?
def build_current(history):
current = {}
for action, key, value in history:
assert action in ('set', 'del')
if action == 'set':
current[key] = value
elif action == 'del':
del current[key]
return current
history = []
history.append(('set', '1', 'one'))
history.append(('set', '2', 'two'))
history.append(('set', '3', 'three'))
print build_current(history)
history.append(('del', '2', None))
history.append(('set', '1', 'uno'))
history.append(('set', '4', 'four'))
print build_current(history)
for action, key, value in history:
if key == '2':
print '(%s, %s, %s)' % (action, key, value)
en cuenta que mediante el uso de la lista del historial se puede reconstruir el diccionario actual en cualquier estado que existió una vez. Considero que esto es una "creación progresiva" (por falta de un término mejor) porque para construir el diccionario actual uno debe comenzar desde el principio y procesar toda la lista de historial. Considero que este es el enfoque más obvio y directo.
Como he escuchado, los primeros sistemas de control de versiones usaban este proceso de "construcción directa", pero no eran óptimos porque a la mayoría de los usuarios les interesan más las versiones recientes de una compilación. Además, los usuarios no desean descargar todo el historial cuando solo les interesa ver la última compilación.
Mi pregunta es, ¿qué otros enfoques existen para almacenar historiales en un sistema de control de versiones? ¿Tal vez podría usarse una "construcción hacia atrás"? Eso podría permitir a los usuarios descargar solo revisiones recientes sin necesitar todo el historial. También tengo seen algunos formatos diferentes para almacenar el historial, a saber: conjuntos de cambios, instantáneas y parches. ¿Cuáles son las diferencias entre changesets, snapshots y parches?
De los modernos controles de versión popular disponibles, ¿cómo almacenan sus historias y cuáles son las ventajas de sus diversos diseños?
Esto probablemente pertenece el programadores.SE. –
Estoy buscando detalles específicos sobre algoritmos y aplicaciones específicos; ¿Eso pertenece a todas las preguntas de asesoramiento profesional sobre los programadores SE? – Buttons840
En realidad, el asesoramiento sobre carreras no está relacionado con el tema y ese tipo de preguntas se cierran rápidamente. Los algoritmos están muy relacionados con el tema. Ver [las preguntas frecuentes] (http://programmers.stackexchange.com/faq). –