comparison design.txt @ 60:613c936d74e4

Log operation to output mode detailed (added, removed) files
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Tue, 18 Jan 2011 00:30:41 +0100
parents 05829a70b30b
children fac8e7fcc8b0
comparison
equal deleted inserted replaced
59:b771e94a4f7c 60:613c936d74e4
30 +calculate sha1 digest for file to see I can deal with nodeid. +Do this correctly (smaller nodeid - first) 30 +calculate sha1 digest for file to see I can deal with nodeid. +Do this correctly (smaller nodeid - first)
31 *.hgignored processing 31 *.hgignored processing
32 +Nodeid to keep 20 bytes always, Revlog.Inspector to get nodeid array of meaningful data exact size (nor heading 00 bytes, nor 12 extra bytes from the spec) 32 +Nodeid to keep 20 bytes always, Revlog.Inspector to get nodeid array of meaningful data exact size (nor heading 00 bytes, nor 12 extra bytes from the spec)
33 +DataAccess - implement memory mapped files, 33 +DataAccess - implement memory mapped files,
34 +Changeset to get index (local revision number) 34 +Changeset to get index (local revision number)
35 +RevisionWalker (on manifest) and WorkingCopyWalker (io.File) talking to ? and/or dirstate (StatusCollector and WCSC)
36 +RevlogStream - Inflater. Perhaps, InflaterStream instead? branch:wrap-data-access
37 +repo.status - use same collector class twice, difference as external code. add external walker that keeps collected maps and use it in Log operation to give files+,files-
35 38
39
40 Implement use of fncache (use names from it - perhaps, would help for Mac issues Alex mentioned) along with 'digest'-ing long file names
41 delta merge
36 DataAccess - collect debug info (buffer misses, file size/total read operations) to find out better strategy to buffer size detection. Compare performance. 42 DataAccess - collect debug info (buffer misses, file size/total read operations) to find out better strategy to buffer size detection. Compare performance.
37 delta merge
38 RevisionWalker (on manifest) and WorkingCopyWalker (io.File) talking to ? and/or dirstate
39 RevlogStream - Inflater. Perhaps, InflaterStream instead?
40 Implement use of fncache (use names from it - perhaps, would help for Mac issues Alex mentioned) along with 'digest'-ing long file names
41 43
42 repo.status - use same collector class twice, difference as external code. add external walker that keeps collected maps and use it 44
43 in Log operation to give files+,files-
44
45 Status operation from GUI - guess, usually on a file/subfolder, hence API should allow for starting path (unlike cmdline, seems useless to implement include/exclide patterns - GUI users hardly enter them, ever) 45 Status operation from GUI - guess, usually on a file/subfolder, hence API should allow for starting path (unlike cmdline, seems useless to implement include/exclide patterns - GUI users hardly enter them, ever)
46 46 -> recently introduced FileWalker may perhaps help solving this (if starts walking from selected folder) for status op against WorkingDir?
47 47
48 ??? encodings of fncache, .hgignore, dirstate 48 ??? encodings of fncache, .hgignore, dirstate
49 ??? http://mercurial.selenic.com/wiki/Manifest says "Multiple changesets may refer to the same manifest revision". To me, each changeset 49 ??? http://mercurial.selenic.com/wiki/Manifest says "Multiple changesets may refer to the same manifest revision". To me, each changeset
50 changes repository, hence manifest should update nodeids of the files it lists, effectively creating new manifest revision. 50 changes repository, hence manifest should update nodeids of the files it lists, effectively creating new manifest revision.
51 51
54 ReadOperation gets buffer (of whatever size, as decided by FS impl), parses it and then reports if needs more data. 54 ReadOperation gets buffer (of whatever size, as decided by FS impl), parses it and then reports if needs more data.
55 This helps to ensure streams are closed after reading, allows caching (if the same file (or LRU) is read few times in sequence) 55 This helps to ensure streams are closed after reading, allows caching (if the same file (or LRU) is read few times in sequence)
56 and allows buffer management (i.e. reuse. Single buffer for all reads). 56 and allows buffer management (i.e. reuse. Single buffer for all reads).
57 Scheduling multiple operations (in future, to deal with writes - single queue for FS operations - no locks?) 57 Scheduling multiple operations (in future, to deal with writes - single queue for FS operations - no locks?)
58 58
59 WRITE: Need to register instances that cache files (e.g. dirstate or .hgignore) to FS notifier, so that cache may get cleared if the file changes (i.e. WriteOperation touches it).
60
59 File access: 61 File access:
60 * NIO and mapped files - should be fast. Although seems to give less control on mem usage. 62 * NIO and mapped files - should be fast. Although seems to give less control on mem usage.
61 * Regular InputStreams and chunked stream on top - allocate List<byte[]>, each (but last) chunk of fixed size (depending on initial file size) 63 * Regular InputStreams and chunked stream on top - allocate List<byte[]>, each (but last) chunk of fixed size (depending on initial file size)
62 64
63 <<<<< 65 <<<<<