42242
|
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>`_?
|