Mercurial > jhg
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 <<<<< |