1. A method for protecting a data set, the method comprising: creating a first version of the data set; determining a first metadata window based on the first version of the data set wherein the first metadata window includes a start time and a stop time associated with a session of sequential alterations of the data set; storing a first set of metadata based on the determined first metadata window in a first storage device wherein the first set of metadata contains at least undo-redo data associated with the first metadata window, and wherein storing the first set of metadata includes retaining the stored the first set of metadata after the session terminates; storing the first version in a second storage device; creating a second version of the data set; determining a second metadata window based on the second version of the data set wherein the second metadata window includes a start time and a stop time associated with a session of sequential alterations of the data set; storing a second set of metadata based on the determined second metadata window in the first storage device wherein the second set of metadata contains at least undo-redo data associated with the second metadata window, and wherein storing the second set of metadata includes retaining the stored the second set of metadata after the session terminates; and storing the second version in a third storage device.