Show More
@@ -0,0 +1,195 b'' | |||||
|
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>`_? |
General Comments 0
You need to be logged in to leave comments.
Login now