Move tracking - a call to action
From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Thu, 20 Jun 2013 21:45:24 +0100 (BST)
At the Hackathon I talked to a bunch of us about how I believe we need to start implementing move tracking, and my overview of a plan, and there was wide agreement from those present.
I am proposing that was tackle move tracking now.
Briefly
It comes from my wanting to make merging better. In thinking about better merging, it became clear to me that we need to track moves so that we can unambiguously match up "the same" node in different branches, or in different revisions. While we can *infer* moves by looking for pairs of copy and delete in various scenarios, we need a way to track and transmit the results of that inference, since it would be crazy to embed that logic within the merge code. In other words, we need at least a move-aware diff interface to use in merging.
If we're going to build a move-aware diff (or tree editor) interface, then rather than try to redesign merging at the same time, it is going to be both easier and more beneficial to first track moves around the basic work-flow cycle:
---> commit --->
[ WC ] [ repo ]
After all,
* Much of the WC part is already working in v1.8.
* Commit and update both transmit the tree changes through an editor.
* We already have ideas about how the repository can store and replay
When that basic work cycle supports moves, that will by itself create a huge leap in usability, that can be released by itself. After that, the other big components, primarily:
* merge
* diff and patch
can be upgraded to support move tracking in a later release.
Most importantly, we already have lots of developer interest. Stefan Sperling has volunteered to work on some of the WC implementation, Ivan volunteered to work on protocol upgrades, and Brane and Stefan Fuhrmann are interested in the semantics and the repository side, among others. I am planning to work on the editor interface and whatever else is necessary, and particularly to work towards making use of move tracking in merging.
Compatibility and Incremental development
The key component is a move-aware edit drive, with the ability to convert between old and new edit drives in both directions. Call it Ev2 and the shims if you like. With that, we can upgrade the system one piece at a time. For example, we could implement storage of moves in the repository, and upgrade 'commit' to store moves, before we implement any way to retrieve the move info from the repository other than as copy-and-delete. That particular example is of no use to users, but very helpful for development.
We will preserve backward compatibility between
How to Proceed?
There will be a lot of things to discuss in depth. I suggest we discuss the general plan and in this thread. For specific components, such as the move-aware editor or the repository storage, let's start separate threads please.
I am writing down more details about several areas on the Wiki, as I go along. This is my project overview page:
<https://wiki.apache.org/subversion/MoveDev/MoveDev>
I see there are already some passionate feedback comments in there, which is great :-)
- Julian
-- Join WANdisco's free daily demo sessions on Scaling Subversion for the Enterprise <http://www.wandisco.com/training/webinars>Received on 2013-06-20 22:46:18 CEST |
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.