##// END OF EJS Templates
lfs: add a TODO file...
Matt Harbison -
r42428:1756859a default
parent child Browse files
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