~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to TODO

Exclude more files from dumb-rsync upload

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
Small things
18
18
------------
19
19
 
 
20
* Fix tests so that import errors caused by modules don't produce false reports
 
21
  that the tests themselves don't exist.
 
22
 
 
23
* Fix tests so that one test failure doesn't prevent other tests from running
 
24
 
 
25
* print a message at the end of running the tests telling them that the
 
26
  test log and output exists but can be removed
 
27
 
 
28
* tests for running the commit editor, and fix problem of not passing in 
 
29
  multiple arguments
 
30
 
20
31
* Merging add of a new file clashing with an existing file doesn't
21
32
  work; add gets an error that it's already versioned and the merge
22
33
  aborts.
41
52
 
42
53
* -r option should take a revision-id as well as a revno.
43
54
 
44
 
* allow ``bzr st -r 300`` to show a summary of changes since then.
45
 
 
46
55
* ``bzr info`` should count only people with distinct email addresses as
47
56
  different committers.  (Or perhaps only distinct userids?)
48
57
 
66
75
* ``bzr status DIR`` should give status on all files under that
67
76
  directory.
68
77
 
69
 
* ``bzr log DIR`` should give changes to any files within DIR.
 
78
* ``bzr log DIR`` should give changes to any files within DIR; at the
 
79
  moment it only lists things which modify the specific named file
 
80
  (and not its contents)
70
81
 
71
82
* ``bzr inventory -r REV`` and perhaps unify this with ``bzr ls``,
72
83
  giving options to display ids, types, etc.
125
136
  methods return object, but what we really want is the raw XML, which
126
137
  can be popped into our own store.  That needs to be refactored.
127
138
 
128
 
* ``bzr status FOO`` where foo is ignored should say so.
129
 
 
130
 
* ``bzr mkdir A...`` should just create and add A.
131
 
 
132
139
* Guard against repeatedly merging any particular patch.
133
140
 
134
141
* More options for diff:
149
156
 
150
157
  - and, of course, tests for all this
151
158
 
152
 
* stat-cache update is too slow for some reason - why is Python making
153
 
  a lot of futex calls?
154
 
  
155
 
* ``bzr add`` with no arguments should probably be the same as ``bzr add .``
156
 
 
157
 
 
 
159
* Reproducible performance benchmark to measure whether performance is 
 
160
  getting better or worse.
 
161
 
 
162
* ``bzr log -m foo`` should perhaps error if nothing matches?
 
163
 
 
164
* ``bzr diff -r 30 -r 40 foo.c`` or ``bzr diff -r30..40 foo.c``
 
165
 
 
166
  If diffing between two branches then we probably want two -r
 
167
  options, since the revisions don't form a range that can be
 
168
  evaluated on either one.
 
169
 
 
170
* bzr diff shouldn't diff binary files
 
171
 
 
172
* setup.py install when run from a bzr tree should freeze the tree
 
173
  revision-id into the installed bzr.
 
174
 
 
175
* bzr script should trap ImportError and perhaps give a better error
 
176
  message?
 
177
 
 
178
* revert after a merge should possibly remove all the BASE/THIS/OTHER
 
179
  files to get you back to where you were.
 
180
 
 
181
* files that are added and then deleted are still reported as added
 
182
 
 
183
* stores should raise KeyError, not IndexError
 
184
 
 
185
* merging from a remote branch seems to sometimes raise errors not
 
186
  present locally
 
187
 
 
188
* should be possible to give a related branch when pulling from a
 
189
  remote branch to make things faster
 
190
 
 
191
* sometimes gives "conflicting add" even when the contents are in fact
 
192
  the same???
 
193
 
 
194
* BZRDIR should be in branch.py not __init__.py.
158
195
 
159
196
Medium things
160
197
-------------
161
198
 
162
 
* Merge revert patch.
163
 
 
164
 
* ``bzr mv`` that does either rename or move as in Unix.
 
199
* merge should add all revision and inventory XML to the local store.
 
200
 
 
201
* check should give a warning for revisions that are named in the
 
202
  chain but not actually present in the store.
 
203
 
 
204
* remove anything outside of the branch implementation that directly
 
205
  accesses the stores.
165
206
 
166
207
* More efficient diff of only selected files.  We should be able to
167
208
  just get the id for the selected files, look up their location and
168
209
  diff just those files.  No need to traverse the entire inventories.
169
210
 
170
 
* ``bzr status DIR`` or ``bzr diff DIR`` should report on all changes
171
 
  under that directory.
172
 
 
173
211
* Fix up Inventory objects to represent root object as an entry.
174
212
 
175
213
* Don't convert entire entry from ElementTree to an object when it is
181
219
 
182
220
* More test cases.
183
221
 
 
222
  - ``missing`` command
 
223
 
184
224
  - Selected-file commit
185
225
 
186
226
  - Impossible selected-file commit: adding things in non-versioned
200
240
 
201
241
  Given this we might be able to import patches at 1/second or better.
202
242
 
203
 
* Get branch over http.
204
 
 
205
 
* Pull pure updates over http.
206
 
 
207
243
* revfile compression.
208
244
 
209
 
* Split inventory into per-directory files.
 
245
* Split inventory into per-directory files?
210
246
 
211
247
* Fix ignore file parsing:
212
248
 
282
318
 
283
319
  - Hold the ElementTree in memory in the Inventory object and work
284
320
    directly on that, rather than converting into Python objects every
285
 
    time it is read in.  Probably still exposoe it through some kind of
 
321
    time it is read in.  Probably still expose it through some kind of
286
322
    object interface though, but perhaps that should just be a proxy
287
323
    for the elements.
288
324
 
294
330
 
295
331
* stat cache should perhaps only stat files as necessary, rather than
296
332
  doing them all up-front.  On the other hand, that disallows the
297
 
  opimization of stating them in inode order.
 
333
  optimization of stating them in inode order.
298
334
 
299
335
* It'd be nice to pipeline multiple HTTP requests.  Often we can
300
336
  predict what will be wanted in future: all revisions, or all texts
325
361
  function.
326
362
 
327
363
* Function to list a directory, saying in which revision each file was
328
 
  last modified.  Useful for web and gui interfaces, and slow to
 
364
  last modified.  Useful for web and GUI interfaces, and slow to
329
365
  compute one file at a time.
330
 
 
331
 
* unittest is standard, but the results are kind of ugly; would be
332
 
  nice to make it cleaner.
 
366
  
 
367
  This will be done when we track file texts by referring to the
 
368
  version that created them. 
333
369
 
334
370
* Check locking is correct during merge-related operations.
335
371
 
344
380
 
345
381
* Track all merged-in revisions in a versioned add-only metafile.
346
382
 
 
383
* ``pull --clobber`` should discard any local changes not present
 
384
  remotely.  Not generally what you want, but possibly useful when
 
385
  you're just mirroring another branch and want to keep tracking it
 
386
  even when they e.g. uncommit or make similar non-forward movements.
 
387
  Also for push I suppose.  Clobber may not be the best name, maybe
 
388
  ``--destroy``?
 
389
 
 
390
* ``uncommit`` command that removes a revision from the end of the
 
391
  revision-history; just doing this is enough to remove the commit,
 
392
  and a new commit will automatically be made against the
 
393
  predecessor.  This can be repeated.
 
394
 
 
395
  It only makes sense to delete from the tail of history, not from the
 
396
  end.
 
397
 
 
398
  The revision, its inventory and texts remain floating in the store.
 
399
  We should perhaps add the revision to a list of removed-commits, so
 
400
  that it can be restored or at least accounted for when checking
 
401
  consistency.  This file would not be versioned, and probably should
 
402
  not propagate when branched.
 
403
 
 
404
  If we track merged revisions then we need to update this list too.
 
405
  If the list is stored in a weave it's easy (implicit): the version
 
406
  of the list can remain but it won't be referenced anymore.  It's
 
407
  probably best to just store this list in a weave in the first place
 
408
  and be done.
 
409
 
347
410
 
348
411
Large things
349
412
------------