Saturday, June 14, 2008

Inverse Meta Rondo

Form



Since running into some issues of concept names at work, and taking way too long to figure out even how to explain the issue as a result, I thought that spending some time writing and musing about the problem would be well-spent. I'll be experimenting with multi-post form as well. I'll alternate posts between general unstructured musings, and more specific and detailed writings on a few topics from past musings. In the spirit of being a musician as well, I'll call this form the "Inverse Meta Rondo". Instead of returning to a theme after digressions, I'll be returning to the theme of digressions between the theme of the theme.



We faced an interesting problem with Mercurial at work. It had been occurring more frequently as the team grew. Occasionally, changesets would be "lost". Then they would be found, remerged, and everything would be fine. I realized it was caused by nonlinear history merges, which shouldn't be possible, but yet it was happening. I initially spent some time trying to explain the issue, but then realized that there were more differences in terminology than I thought.



Ramblings on Abstract Terminology



This is my first attempt to describe the atoms of change management using connotation-free words that can be applied to understanding existing systems. Much of the confusion regarding these systems seems to center on overloading terms such as branch, repository, changeset, and many others.



The data set is the set of all information that is being managed by the change management system. This does not include information created by the system as a result of managing the data.

A state is a sample of the data set at a point in time recorded by the system. This can include metadata created by the system to describe the state, and other metadata describing the relations this state has to other states. All metadata is an optimization, however, and as such is handled differently in different systems.



The predecessor of a state is the state immediately before it. The successor is the state immediately after it.



A sequence of states is a state line. The first state in a state line is the origin and the last the terminal.



A state line diverges at state having more than one successor. This state is the point of divergence, and the successors are each the origins of divergent lines of succession.



Two divergent state lines can converge when one state on each line shares a successor. The shared successor state is the point of convergence. It is also the terminus of both the state lines.

No comments: