287
by Martin Pool
- todo: plugins |
1 |
-*- indented-text -*- |
2 |
||
293
by Martin Pool
- todos |
3 |
See also various low-level TODOs in the source code. Try looking in |
284
by Martin Pool
- more TODO items |
4 |
the list archive or on gmane.org for previous discussion of these |
293
by Martin Pool
- todos |
5 |
issues. |
6 |
||
7 |
These are classified by approximate size: an hour or less, a day or |
|
8 |
less, and several days or more. |
|
9 |
||
282
by Martin Pool
- move all TODO items into ./TODO |
10 |
|
11 |
Small things |
|
12 |
------------
|
|
13 |
||
14 |
* Add of a file that was present in the base revision should put back |
|
15 |
the previous file-id. |
|
16 |
||
17 |
* Handle diff of files which do not have a trailing newline; probably |
|
18 |
requires patching difflib to get it exactly right, or otherwise |
|
19 |
calling out to GNU diff. |
|
20 |
||
21 |
* Import ElementTree update patch. |
|
22 |
||
284
by Martin Pool
- more TODO items |
23 |
* Syntax should be "bzr export -r REV". |
282
by Martin Pool
- move all TODO items into ./TODO |
24 |
|
285
by Martin Pool
- update todos |
25 |
* "cat -rREV FILE" |
26 |
||
287
by Martin Pool
- todo: plugins |
27 |
* Plugins that provide commands. By just installing a file into some |
28 |
directory (e.g. /usr/share/bzr/plugins) it should be possible to |
|
29 |
create new top-level commands ("bzr frob"). Extensions can be |
|
30 |
written in either Python (in which case they use the bzrlib API) or |
|
31 |
in a separate process (in sh, C, whatever). It should be possible |
|
32 |
to get help for plugin commands. |
|
33 |
||
288
by Martin Pool
TODO |
34 |
* Smart rewrap text in help messages to fit in $COLUMNS (or equivalent |
35 |
on Windows) |
|
36 |
||
289
by Martin Pool
todo |
37 |
* -r option should take a revision-id as well as a revno. |
38 |
||
290
by Martin Pool
todo |
39 |
* "bzr info" could show space used by working tree, versioned files, |
40 |
unknown and ignored files. |
|
41 |
||
42 |
* "bzr info" should count only people with distinct email addresses as |
|
43 |
different committers. (Or perhaps only distinct userids?) |
|
44 |
||
291
by Martin Pool
todo |
45 |
* Tidier error for EPIPE: should be just "bzr: broken pipe" with no |
46 |
other details because debugging information is rarely interesting. |
|
290
by Martin Pool
todo |
47 |
|
293
by Martin Pool
- todos |
48 |
* On Windows, command-line arguments should be glob-expanded__, |
49 |
because the shell doesn't do this. However, there are probably some |
|
50 |
commands where this shouldn't be done, such as 'bzr ignore', because |
|
51 |
we want to accept globs. |
|
52 |
||
53 |
__ http://mail.python.org/pipermail/python-list/2001-April/037847.html |
|
54 |
||
295
by Martin Pool
todo |
55 |
* 'bzr ignore' command that just adds a line to the .bzrignore file |
56 |
and makes it versioned. |
|
57 |
||
58 |
* 'bzr help commands' should give a one-line summary of each command. |
|
59 |
||
310
by Martin Pool
- new 'bzr ignored' command! |
60 |
* Are any sanity checks useful in 'bzr ignore'? |
61 |
||
282
by Martin Pool
- move all TODO items into ./TODO |
62 |
Medium things |
63 |
-------------
|
|
64 |
||
295
by Martin Pool
todo |
65 |
* Display command grammar in help messages rather than hardcoding it. |
66 |
||
67 |
* Change command functions into Command() objects, like in hct, and |
|
68 |
then the grammar can be described directly in there. Since all |
|
69 |
option definitions are global we can define them just once and |
|
70 |
reference them from each command. |
|
71 |
||
294
by Martin Pool
todo |
72 |
* Selective commit of only some files. |
73 |
||
282
by Martin Pool
- move all TODO items into ./TODO |
74 |
* Faster diff/status. |
75 |
||
76 |
Status should be handled differently because it needs to report on |
|
77 |
deleted and unknown files. diff only needs to deal with versioned |
|
78 |
files. |
|
79 |
||
80 |
* Merge Aaron's merge code. |
|
81 |
||
82 |
* Merge revert patch. |
|
83 |
||
84 |
* Turn on stat cache code, and add optimization about avoiding |
|
85 |
dangerous cache entries. |
|
86 |
||
87 |
* mv command? |
|
88 |
||
89 |
* More efficient diff of only selected files. |
|
90 |
||
91 |
* Fix up Inventory objects to represent root object as an entry. |
|
92 |
||
93 |
* Don't convert entire entry from |
|
94 |
||
95 |
* Extract changes from one revision to the next to a text form |
|
96 |
suitable for transmission over email. |
|
97 |
||
98 |
* More test cases. |
|
99 |
||
100 |
* Write a reproducible benchmark, perhaps importing various kernel versions. |
|
101 |
||
102 |
* Change test.sh from Bourne shell into something in pure Python so |
|
103 |
that it can be more portable. |
|
104 |
||
105 |
* Directly import diffs! It seems a bit redundant to need to rescan |
|
106 |
the directory to work out what files diff added/deleted/changed when |
|
107 |
all the information is there in the diff in the first place. |
|
108 |
Getting the exact behaviour for added/deleted subdirectories etc |
|
109 |
might be hard. |
|
110 |
||
111 |
At the very least we could run diffstat over the diff, or perhaps |
|
112 |
read the status output from patch. Just knowing which files might |
|
113 |
be modified would be enough to guide the add and commit. |
|
114 |
||
115 |
Given this we might be able to import patches at 1/second or better. |
|
116 |
||
117 |
* Get branch over http. |
|
118 |
||
119 |
* Pull pure updates over http. |
|
120 |
||
121 |
* revfile compression. |
|
122 |
||
123 |
* Split inventory into per-directory files. |
|
124 |
||
284
by Martin Pool
- more TODO items |
125 |
* Fix ignore file parsing: |
126 |
||
127 |
- fnmatch is not the same as unix patterns |
|
128 |
||
129 |
- perhaps add extended globs from rsh/rsync |
|
130 |
||
131 |
- perhaps a pattern that matches only directories or non-directories |
|
132 |
||
294
by Martin Pool
todo |
133 |
* Expansion of $Id$ keywords within working files. Perhaps do this in |
284
by Martin Pool
- more TODO items |
134 |
exports first as a simpler case because then we don't need to deal |
135 |
with removing the tags on the way back in. |
|
136 |
||
282
by Martin Pool
- move all TODO items into ./TODO |
137 |
|
138 |
Large things |
|
139 |
------------
|
|
140 |
||
294
by Martin Pool
todo |
141 |
* Hooks for pre-commit, post-commit, etc. |
142 |
||
143 |
Consider the security implications; probably should not enable hooks |
|
144 |
for remotely-fetched branches by default. |
|
145 |
||
146 |
* Pre-commit check. If this hook is defined, it needs to be handled |
|
147 |
specially: create a temporary directory containing the tree as it |
|
148 |
will be after the commit. This means excluding any ignored/unknown |
|
149 |
files, and respecting selective commits. Run the pre-commit check |
|
150 |
(e.g. compile and run test suite) in there. |
|
151 |
||
282
by Martin Pool
- move all TODO items into ./TODO |
152 |
* Web interface |
153 |
||
154 |
* GUI (maybe in Python GTK+?) |
|
155 |
||
284
by Martin Pool
- more TODO items |
156 |
* C library interface |