⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 todo

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻
字号:
What's happening nowThe filesystem needs some path validation stuffs independent of theSVN path utilities.  A filesystem path is a well-defined Thing thatshould be held a safe distance away from future changes to SVN'sgeneral path library.IncorrectnessesWe must ensure that node numbers are never reused.  If we open a node,svn_fs_delete it, and then create new nodes, what happens when theoriginal node structure suddenly comes to refer to an entirelydifferent node?  Files become directories?We should convert filenames to some canonical Unicode form, forcomparison.Does everyone call svn_fs__check_fs who should?svn_fs_delete will actually delete non-empty directories, if they'renot cloned.  This is inconsistent; should it be fixed?Does every operation on a deleted node or completed transaction failgracefully?Produce helpful error messages when filename paths contain nullcharacters.UglinessesFix up comments in svn_fs.h for transactions.Add `public name' member to filesystem structure, to use to identifythe filesystem in error messages.  When driven by DAV, this could be aURL.When a dag function signals an error, it has no idea what the path ofthe relevant node was.  But node revision ID's are pretty useless tothe user.  tree.c should probably rewrap some errors.svn_fs__getsize shouldn't rely on a maximum value for detectingoverflow.The use of svn_fs__getsize in svn_fs__parse_id is ugly --- what ifsvn_vernum_t and apr_size_t aren't the same size?Consider some macros or accessory functions for referencing the piecesof the NODE-REVISION skel (instead of seeing stuff likenode->children->next->next and such other unreadable rubbish)SlownessesWe don't store older node revisions as deltas yet.The delta algorithm walks the whole tree using a single pool, so thememory used is proportional to the size of the target tree.  Instead,it should use a separate subpool every time it recurses into a newdirectory, and free that subpool as soon as it's done processing thatsubdirectory, so the memory used is proportional to the depth of thetree.We should move as much real content out of the NODE-REVISION skel aspossible; the skels should be holding only small stuff (node kind,flags).- File contents and deltas should be moved out to a `contents' table.  The NODE-REVISION skel should simply contain a key into that table.- Directory contents should be moved out to a `directories' table,  with a separate table entry for each directory entry.  Keys into the  table should be of the form `NODE-ID ENTRY-NAME NODE-REVISION', and  values should be node revision ID's, or the word `deleted'; to look  up an entry named E in a directory whose node revision is N.R,  search for the entry `N E x', where x is the largest number present  <= R.- Property lists should be moved out to a table `properties', indexed  similarly to the above.  We could deltify property contents the  same way we do file contents.AmenitiesExtend svn_fs_copy to handle mutable nodes.Long term ideas:- directory entry cache:  Create a cache mapping a node revision id X plus a filename component  N onto a new node revision id Y, meaning that X is a directory in  which the name N is bound to ID Y.  If everything were in the cache,  this function could run with no I/O except for the final node.  Since node revisions never change, we wouldn't have to worry about  invalidating the cache.  Mutable node objects will need special  handling, of course.- fulltext cache:  If we've recently computed a node's fulltext, we might want to keep  that around in case we need to compute one of its nearby ancestors'  fulltext, too.  This could be a waste, though --- the access  patterns are a mix of linear scan (backwards to reconstruct a given  revision) and random (who knows what node we'll hit next), so it's  not clear what cache policy would be effective.  Best to record some  data on how many delta applications a given cache would avoid before  implementing it.- delta cache:  As people update, we're going to be recomputing text deltas for the  most recently changed files pretty often.  It might be worthwhile to  cache the deltas for a little while.- Handle Unicode canonicalization for directory and property names  ourselves.  People should be able to hand us any valid UTF-8  sequence, perhaps with precomposed characters or non-spacing marks  in a non-canonical order, and find the appropriate matches, given  the rules defined by the Unicode standard.Keeping repositories alive in the long term: Berkeley DB is infamousfor changing its file format from one revision to the next.  If someonesaves a Subversion 1.0 repository on a CD somewhere, and then tries toread it seven years later, their chance of being able to read it withthe latest revision of Subversion is nil.  The solution:- Define a simply XML repository dump format for the complete  repository data.  This should be the same format we use for CVS  repository conversion.  We'll have an import function.- Write a program that is simple and self-contained --- does not use  Berkeley DB, no fancy XML tools, uses nothing but POSIX read and  seek --- that can dump a Subversion repository in that format.- For each revision of Subversion, make a sample repository, and  archive a copy of it away as test data.- Write a test suite that verifies that the repository dump program  can handle all of the archived formats.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -