User:Suzanne.soy/Version control

From FreeCAD Documentation
Revision as of 08:07, 3 February 2021 by Suzanne.soy (talk | contribs) (WIP, saving to avoid loosing everyting in a browser crash…)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  • Forum topic: Storing FreeCAD files in a git repo
    • Research paper: Nonlinear Revision Control for Images (2011 SIG)
      • Summary: a GIMP plug-in which offers a history DAG, a visual diff, a merge tool, a replay tool.
      • From paper: it compresses steps (e.g. brush strokes) into a single DAG node, and use a "visual importance filter"
      • Idea: Similarity metrics based on distance, whether the user used pan & zoom and rotated the view, whether the modification touches
      • Idea: allow expansion of the DAG nodes
      • Idea: non-parametric operations (e.g. changing a property) should use the same objects (or nodes in a nodal interface) as the equivalent parametric operation (translate, rotate, colourise… or a generic "change property" that takes a quoted node (as in LISP / Scheme quotes) and edits its properties (in a sense it's a macro, as opposed to functions which need the user to explicitly wrap their objects and decide on arguments and return values). In the history the transformation objects/nodes are stored as such, but are inlined so that the user works with the result without seeing the intermediate steps.
      • Idea: selection should be a parametric operation (e.g. select all filleted faces, except for the ones touching the top face: that's two selection/filter nodes in a chain)
      • Idea: conflicts (touches same property / touches property in same group (X vs. Y, X vs. Angle) / touches adjacent vertex or edge or face / touches same object
      • Idea: preemptive detection of conflicts with other branches (real-time sync of history, detect conflicts at every step)
      • Idea: when the pending operation would cause a conflict with other branches, offer to merge now, or to do a "shadow merge" (as if there were three computers: person A on their computer, person B on their computer, a common computer, and each person was doing every operation both on their own computer and on the common computer; conflicts are detected on the common and can be resolved instantly, but each person normally work on their own copy which doesn't include the other's changes)