RFC: tortoise strategy document, part 2
bialix at ukr.net
Thu Apr 3 13:05:52 BST 2008
Mark Hammond пишет:
> -- start of new text --
> Performance considerations:
> The following discussions assume the "Hybrid Python and C++ implementation"
> strategy, discussed above, is chosen for implementation. To recap, TSVN
IMO, you talk here about TBZR, not TSVN, right?
> becomes a C++ implemented DLL using RPC to talk to a Python implemented
> "server" which does all BZR work.
> As discussed above, the model used by Tortoise is that most "interesting"
> things are done by external applications. TSVN does show read-only columns
But I'm not sure about this one. Is it also should be read as TBZR?
> We will also allow all of the above to be disabled via user preferences.
> Thus, Icon Overlays could be disabled if it did cause a problem for some
> people, for example.
> Vista versus XP
> Let's try and avoid an OS advocacy debate :) But it is probably true that
> TBZR will, over its life, be used by more Vista computers than XP ones. In
> short, Vista has changed a number of shell related interfaces, and while
> TSVN is slowly catching up (http://tortoisesvn.net/vistaproblems) they are a
> XP has IColumnProvider (as implemented by Tortoise), but Vista changes this
> model. The new model is based around "file types" (eg, .jpg files) and it
> appears each file type can only have 1 provider! TSVN also seems to think
> the Vista model isn't going to work (see previous link). It's not clear how
> much effort we should expend on a column system that has already been
> abandoned by MS. I would argue we spend effort on other parts of the system
> (ie, the external GUI apps themselves, etc) and see if a path forward does
> emerge for Vista. Re can re-evaluate this based on user feedback and more
"Re" or "We"?
> information about features of the Vista property system.
> Implementation plan:
> * Design the RPC mechanism used for icon overlays (ie, binary format used
> for communication)
> * Create Python prototype of the C++ "shim": modify the existing TBZR Python
> code so that all references to "bzrlib" are removed. Implement the client
> side of the RPC mechanism and implement icon overlays using this RPC
> * Create initial implementation of RPC server in Python. This will use
> bzrlib, but will also maintain a local cache to achieve the required
> performance. The initial implementation may even be single-threaded, just
> to keep synchronization issues to a minimum.
> * Analyze performance of prototype. Verify that technique is feasible and
> will offer reasonable performance and user experience.
> * Implement C++ shim: replace the Python prototype with a light-weight C++
> version. We would work from the current TSVN sources, including its new
> support for sharing icon overlays. Advice on if we should "fork" TSVN, or
> try and manage our own svn based branch in bazaar are invited.
> * Implement property pages and context menus in C++. Expand RPC server as
> * Create binary for alpha releases, then go round-and-round until its baked
I'm impressed too much.
More information about the bazaar