Mercurial > hg
comparison hgext/lfs/TODO.rst @ 42242:1756859a65fa
lfs: add a TODO file
This is a cleaned up and reorganized list of items I sent out about a year ago.
But tracking this in the repo (like the narrow extension) gives more visibility
in case anyone wants to help out.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 04 May 2019 01:16:42 -0400 |
parents | |
children | ed9a99564051 |
comparison
equal
deleted
inserted
replaced
42241:c74226916c8c | 42242:1756859a65fa |
---|---|
1 Prior to removing (EXPERIMENTAL) | |
2 -------------------------------- | |
3 | |
4 These things affect UI and/or behavior, and should probably be implemented (or | |
5 ruled out) prior to taking off the experimental shrinkwrap. | |
6 | |
7 #. Finish the `hg convert` story | |
8 | |
9 * Add an argument to accept a rules file to apply during conversion? | |
10 Currently `lfs.track` is the only way to affect the conversion. | |
11 * drop `lfs.track` config settings | |
12 * splice in `.hglfs` file for normal repo -> lfs conversions? | |
13 | |
14 #. Stop uploading blobs when pushing between local repos | |
15 | |
16 * Could probably hardlink directly to the other local repo's store | |
17 * Support inferring `lfs.url` for local push/pull (currently only supports | |
18 http) | |
19 | |
20 #. Stop uploading blobs on strip/amend/histedit/etc. | |
21 | |
22 * This seems to be a side effect of doing it for `hg bundle`, which probably | |
23 makes sense. | |
24 | |
25 #. Handle a server with the extension loaded and a client without the extension | |
26 more gracefully. | |
27 | |
28 * `changegroup3` is still experimental, and not enabled by default. | |
29 * Figure out how to `introduce LFS to the server repo | |
30 <https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-September/122281.html>`_. | |
31 See the TODO in test-lfs-serve.t. | |
32 | |
33 #. Remove `lfs.retry` hack in client? This came from FB, but it's not clear why | |
34 it is/was needed. | |
35 | |
36 #. `hg export` currently writes out the LFS blob. Should it write the pointer | |
37 instead? | |
38 | |
39 * `hg diff` is similar, and probably shouldn't see the pointer file | |
40 | |
41 #. `Fix https multiplexing, and re-enable workers | |
42 <https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-January/109916.html>`_. | |
43 | |
44 #. Show to-be-applied rules with `hg files -r 'wdir()' 'set:lfs()'` | |
45 | |
46 * `debugignore` can show file + line number, so a dedicated command could be | |
47 useful too. | |
48 | |
49 #. Filesets, revsets and templates | |
50 | |
51 * A dedicated revset should be faster than `'file(set:lfs())'` | |
52 * Attach `{lfsoid}` and `{lfspointer}` to `general keywords | |
53 <https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-January/110251.html>`_, | |
54 IFF the file is a blob | |
55 * Drop existing items that would be redundant with general support | |
56 | |
57 #. Can `grep` avoid downloading most things? | |
58 | |
59 * Add a command option to skip LFS blobs? | |
60 | |
61 #. Add a flag that's visible in `hg files -v` to indicate external storage? | |
62 | |
63 #. Server side issues | |
64 | |
65 * Check for local disk space before allowing upload. (I've got a patch for | |
66 this.) | |
67 * Make sure the http codes used are appropriate. | |
68 * `Why is copying the Authorization header into the JSON payload necessary | |
69 <https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-April/116230.html>`_? | |
70 * `LFS-Authenticate` header support in client and server(?) | |
71 | |
72 #. Add locks on cache and blob store | |
73 | |
74 * This is complicated with a global store, and multiple potentially unrelated | |
75 local repositories that reference the same blob. | |
76 * Alternately, maybe just handle collisions when trying to create the same | |
77 blob in the store somehow. | |
78 | |
79 #. Are proper file sizes reported in `debugupgraderepo`? | |
80 | |
81 #. Finish prefetching files | |
82 | |
83 * `-T {rawdata}` | |
84 * `verify` | |
85 * `grep` | |
86 | |
87 #. Output cleanup | |
88 | |
89 * Can we print the url when connecting to the blobstore? (A sudden | |
90 connection refused after pulling commits looks confusing.) Problem is, | |
91 'pushing to main url' is printed, and then lfs wants to upload before going | |
92 back to the main repo transfer, so then *that* could be confusing with | |
93 extra output. (This is kinda improved with 380f5131ee7b and 9f78d10742af.) | |
94 | |
95 * Add more progress indicators? Uploading a large repo looks idle for a long | |
96 time while it scans for blobs in each outgoing revision. | |
97 | |
98 * Print filenames instead of hashes in error messages | |
99 | |
100 * subrepo aware paths, where necessary | |
101 | |
102 * Is existing output at the right status/note/debug level? | |
103 | |
104 #. Can `verify` be done without downloading everything? | |
105 | |
106 * If we know that we are talking to an hg server, we can leverage the fact | |
107 that it validates in the Batch API portion, and skip d/l altogether. OTOH, | |
108 maybe we should download the files unconditionally for forensics. The | |
109 alternative is to define a custom transfer handler that definitively | |
110 verifies without transferring, and then cache those results. When verify | |
111 comes looking, look in the cache instead of actually opening the file and | |
112 processing it. | |
113 | |
114 * Yuya has concerns about when blob fetch takes place vs when revlog is | |
115 verified. Since the visible hash matches the blob content, I don't think | |
116 there's a way to verify the pointer file that's actually stored in the | |
117 filelog (other than basic JSON checks). Full verification requires the | |
118 blob. See | |
119 https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-April/116133.html | |
120 | |
121 * Opening a corrupt pointer file aborts. It probably shouldn't for verify. | |
122 | |
123 | |
124 Future ideas/features/polishing | |
125 ------------------------------- | |
126 | |
127 These aren't in any particular order, and are things that don't have obvious BC | |
128 concerns. | |
129 | |
130 #. Garbage collection `(issue5790) <https://bz.mercurial-scm.org/show_bug.cgi?id=5790>`_ | |
131 | |
132 * This gets complicated because of the global cache, which may or may not | |
133 consist of hardlinks to the repo, and may be in use by other repos. (So | |
134 the gc may be pointless.) | |
135 | |
136 #. `Compress blobs <https://github.com/git-lfs/git-lfs/issues/260>`_ | |
137 | |
138 * 700MB repo becomes 2.5GB with all lfs blobs | |
139 * What implications are there for filesystem paths that don't indicate | |
140 compression? (i.e. how to share with global cache and other local repos?) | |
141 * Probably needs to be stored under `.hg/store/lfs/zstd`, with a repo | |
142 requirement. | |
143 * Allow tuneable compression type and settings? | |
144 * Support compression over the wire if both sides understand the compression? | |
145 * `debugupgraderepo` to convert? | |
146 * Probably not worth supporting compressed and uncompressed concurrently | |
147 | |
148 #. Determine things to upload with `readfast() | |
149 <https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-August/121315.html>`_ | |
150 | |
151 * Significantly faster when pushing an entire large repo to http. | |
152 * Causes test changes to fileset and templates; may need both this and | |
153 current methods of lookup. | |
154 | |
155 #. Is a command to download everything needed? This would allow copying the | |
156 whole to a portable drive. Currently this can be effected by running | |
157 `hg verify`. | |
158 | |
159 #. Stop reading in entire file into one buffer when passing through filelog | |
160 interface | |
161 | |
162 * `Requires major replumbing to core | |
163 <https://www.mercurial-scm.org/wiki/HandlingLargeFiles>`_ | |
164 | |
165 #. Keep corrupt files around in 'store/lfs/incoming' for forensics? | |
166 | |
167 * Files should be downloaded to 'incoming', and moved to normal location when | |
168 done. | |
169 | |
170 #. Client side path enhancements | |
171 | |
172 * Support paths.default:lfs = ... style paths | |
173 * SSH -> https server inference | |
174 | |
175 * https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-April/115416.html | |
176 * https://github.com/git-lfs/git-lfs/blob/master/docs/api/server-discovery.md#guessing-the-server | |
177 | |
178 #. Server enhancements | |
179 | |
180 * Add support for transfer quotas? | |
181 * Download should be able to send the file in chunks, without reading the | |
182 whole thing into memory | |
183 (https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-March/114584.html) | |
184 * Support for resuming transfers | |
185 | |
186 #. Handle 3rd party server storage. | |
187 | |
188 * Teach client to handle lfs `verify` action. This is needed after the | |
189 server instructs the client to upload the file to another server, in order | |
190 to tell the server that the upload completed. | |
191 * Teach the server to send redirects if configured, and process `verify` | |
192 requests. | |
193 | |
194 #. `Is any hg-git work needed | |
195 <https://groups.google.com/d/msg/hg-git/XYNQuudteeM/ivt8gXoZAAAJ>`_? |