~ubuntu-branches/ubuntu/saucy/xxdiff/saucy

« back to all changes in this revision

Viewing changes to TODO

  • Committer: Bazaar Package Importer
  • Author(s): Tomas Pospisek
  • Date: 2006-12-03 21:41:08 UTC
  • mfrom: (3.1.3 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203214108-l7d3sleqmf1uu1is
Tags: 1:3.2-2
* oops /usr/man slipped in again. Re-re-re-moving it.
* fix doc-base reference problems reported by lintian

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
============
2
 
TODO: xxdiff
3
 
============
4
 
 
5
 
* remove all the if 0 in builders (and in all the code)
 
1
==================
 
2
   TODO: xxdiff
 
3
==================
 
4
 
 
5
.. contents::
 
6
..
 
7
    1  Next Release
 
8
    2  Less Urgent, but do it soon too
 
9
    3  Goals for 4.0 stable release:
 
10
    4  Promo
 
11
    5  Other
 
12
 
 
13
 
 
14
Next Release
 
15
============
 
16
 
 
17
- Apply Trevor Harmon's patch for the port to Qt4.
 
18
 
 
19
 
 
20
Less Urgent, but do it soon too
 
21
===============================
 
22
 
 
23
* Add a '-w' option to invoke.py (!?), to ignore whitespace changes easily.
 
24
 
 
25
* When the comments file has not changed, warn the user that he did not appear
 
26
  to have saved the file.
 
27
 
 
28
* It would be awesome if select.py had an option to select by file-type
 
29
  (e.g. running “file”).  Open a child running a “file” command and feed it the
 
30
  filenames one-by-one rather than starting a new one everytime.
 
31
 
 
32
* Look at fixing the bugs in xxdiff/test/bugs
 
33
 
 
34
* For MAC OSX: if there are no files specified, invoke a special double- file
 
35
  dialog chooser to graphically select which files to diff.
 
36
 
 
37
* xx-svn-diff: Comments file: To add new files to the comments file:
 
38
 
 
39
  a) Check if at least one line of the comments file is the same as any line of
 
40
     the status OR if the file is empty
 
41
 
 
42
  b) if so, add all the status lines tha tdiffer at thte end of the comments
 
43
     file (with an empty line in between)
 
44
 
 
45
  c) otherwise we do not append the new statii lines
 
46
 
 
47
* Bug: toggling "Format clipboard text" at runtime does not seem to have an
 
48
  effect.
 
49
 
 
50
* Fix [1200496] Diff Errors reported with certain text files
 
51
 
 
52
* Fix [1079038] Split Bug.
 
53
 
 
54
* xx-svn-diff: Implement fetching any two revisions and displaying the filelist
 
55
  and the diffs graphically for those changes.
 
56
 
 
57
* See open bug [1174957] Odd behavior when "-O" and "-E" used together:  When
 
58
  --exit-if-no-conflicts and --merged-filename are specified together, and there
 
59
  are no conflicts, output the result file to the merged filename.
 
60
 
 
61
* There is a slight rendering bug with my current font (see png file under /bugs)
 
62
 
 
63
* Define a clearer list of verbosity levels that is consistent across all the
 
64
  scripts and change the levels.
 
65
 
 
66
* Automatically log output to a log file in the backups directory if the backups
 
67
  are enabled, that would rock.
 
68
 
 
69
--------------------------------------------------------------------------------
 
70
(Scripts)
 
71
 
 
72
* When xxdiff is invoked with --decision and -D, which answer should result?
 
73
  Right now we output NODECISION, but perhaps ACCEPT would be more appropriate?
 
74
  I'm not sure.
 
75
 
 
76
* Write an asynchronous background loop in xformloop for slow processes, where a
 
77
  number of diffs could accumulate in the background and be ready to diff while
 
78
  whatever is being done to produce the diffs keeps running.  Grab this from my
 
79
  good old exp preview.  Put this in ``lib/python/xxdiff/async.py``
 
80
 
 
81
  (Note: this goes hand-in-hand with the diff'ing of arbitraty SVN revisions, as
 
82
  we will have to fetch files from the network and this might be slow.
 
83
  Implement both of these features at the same time.)
 
84
 
 
85
* xx-svn-diff: When the parent process gets killed, make sure to kill the
 
86
  editor as well, otherwise it can be really annoying because this leaves swap
 
87
  files around if we restart manually killing the editing window (which can
 
88
  happen if you leave it in the background).
 
89
 
 
90
* Provide a way to invoke xxdiff with alternate diff programs.
 
91
 
 
92
  - Using this code, provide code to create alternate diff programs that compare
 
93
    pairs of things, with or without subdiffs, by outputting POSIX diff output.
 
94
 
 
95
 
 
96
* xx-rename: With respect to case sensitivity, supports the smart
 
97
  replacement behaviour that is present in GNU emacs.
 
98
 
 
99
* Implement a better side-by-side diff that includes line numbers and context.
 
100
  The current side-by-side diff sucks.  One of the things that could be done
 
101
  easily is reuse diff --side-by-side without compressing, adding the line
 
102
  numbers by hand, and then compressing by hand too.
 
103
 
 
104
  - Add an option to generate normal diffs rather than side-by-side.
 
105
 
 
106
* xx-patch: Finish It! 
 
107
 
 
108
  * You have to deal with 'delete' and 'add' cases.
 
109
 
 
110
  * Q: what do we do when patch fails?  How do we treat it?
 
111
    must read the output messages of patch and warn the user.
 
112
 
 
113
* xx-svn-diff: TODO
 
114
 
 
115
  * --launcher: Create simple PyQt or CURSES GUI for listing files from ``svn
 
116
    status``, on which you can click to view the diffs.
 
117
 
 
118
  * Implement including differences from the ancestor file with 3-way diffs.
 
119
 
 
120
  * Implement viewing differences between any two revision in the repository.
 
121
 
 
122
  * Wouldn't it be nice to have a decision mode here?  Maybe, maybe not.  You
 
123
    can save as merged if desired, the merged filename is set to the output
 
124
    filename.
 
125
 
 
126
* Fix these old subprocesses by using the subprocess module::
 
127
 
 
128
   banane:~/p/.../python/xxdiff$ igrep os.popen .
 
129
   ./scripts/encrypted.py:        fin, fout = os.popen2(decodecmd % m, 'w')
 
130
   ./scripts/encrypted.py:        fin, fout = os.popen2(cmd, 'w')
 
131
   ./scripts/cvsdiff.py:        cin, cout = os.popen2(
 
132
   ./scripts/patch.py:        cin, cout = os.popen2(cmd, 'rw')
 
133
 
 
134
* Implement --single-right: we should be able to display single files on either
 
135
  side.  You should fix xx-match after that, so that it passes the correct
 
136
  options to xxdiff.
 
137
 
 
138
* Consider putting a check for binary files in xxdiff.invoke.* and raise a
 
139
  RuntimeError if the files aren't text.
 
140
 
 
141
* xx-rename: We should able to read renames from a file, two names by line, or
 
142
  something similar.
 
143
 
 
144
--------------------------------------------------------------------------------
 
145
 
 
146
* Idea: we could modify xxdiff so that when we reload, we could output RELOAD
 
147
  and that could mean for the client to redo some task in the background, then
 
148
  let xxdiff know to reload after that.  This would allow xxdiff to communicate
 
149
  with the parent process.  This should actually be part of a larger protocol
 
150
  for client to communicate with xxdiff and vice-versa.  This is a cool idea,
 
151
  but a lot of work for very little benefit.
 
152
 
 
153
 
 
154
 
 
155
* From Michalis Giannakidis, mgiann@beta-cae.gr
 
156
 
 
157
  Do this:
 
158
 
 
159
    What, here in our company, find useful about cvsxxdiff is:
 
160
    o) cvsxxdiff is one file. No python module directory or initialization is
 
161
    requierd.
 
162
    o) Do a 'cvs up; cvsxxdiff' before commit to see all the local changes we have
 
163
    made.
 
164
    o) Do 'cvs up; cvsxxdiff -b 1 file.c' to see the last chages that were made on
 
165
    a file by a colleague.
 
166
    o) We often need to track bugs in our code. This means going back to previous
 
167
    revisions, thus doing ex: 'cvsxxdiff -b 1 -b 2 file.c' to compare the
 
168
    previous with the 2nd previous revision. (similar with cvsxxdiff -r 1.1 -r
 
169
    1.2 file.c)
 
170
    o) The utility prints  in the standard output the logs between revisions i
 
171
    and j ( ex: cvsxxdif -b i -b j file.c)
 
172
 
 
173
    One script to do it all.
 
174
 
 
175
 
 
176
 
 
177
 
 
178
--------------------------------------------------------------------------------
 
179
 
 
180
- Install xxdiff on windows, when Qt4 non-commercial comes out
 
181
 
 
182
- try beyondcompare::
 
183
 
 
184
   Si jamais tu veux retravailler sur xxdiff, je viens de trouver le canif
 
185
   suisse des diffs graphiques, tu manqueras pas d'id\x{00E9}es pour xxdiff
 
186
   avec \x{00E7}a... Absolument incroyable (mais c'est un produit
 
187
   commercial). \x{00C7}a s'appelle "Beyond Compare" de Scooter Software. Le
 
188
   genre de programme qui te fait dire "enfin sti". \x{00C7}a compare aussi des
 
189
   r\x{00E9}pertoires (r\x{00E9}cursivement itou, avec des diffs par fichier),
 
190
   et c'est aussi incroyablement facile de faire un merge. Vraiment
 
191
   g\x{00E9}nial..
 
192
   http://www.scootersoftware.com/
 
193
 
 
194
 
 
195
 
 
196
* Bugs with horizontal diffs:
 
197
 
 
198
    However, I do have a suggestion. Your code does not
 
199
    seem to be using a logic such as the Ratcliff/Obershelp
 
200
    pattern recognition algorithm, which is adopted by some
 
201
    other common graphical diff tools. Using such a logic,
 
202
    they search for the longest common substring between
 
203
    two strings. The match is then used as an archor,
 
204
    around which they would recursively do the same for the
 
205
    left and right remaining pieces.
 
206
 
 
207
 
 
208
New feature, ignore regexp patterns::
 
209
 
 
210
  Bonjour Martin,
 
211
  Comme convenu voici le  feature  que je trouvais utile dans Examdiff Pro :
 
212
  - Regular Expression support dans le champs Ignore.
 
213
  Exemple :
 
214
              Faire une comparaison de 2 fichiers contenant des UID que je ne veux pas considérer comme différent lors de la comparaison.
 
215
  Contexte :
 
216
              j'avais a comparer des fichiers generes par un generateur de code java.  les fichiers contenait des code pockets du genre:
 
217
  // BEGIN Code pocket ID : XXXX-XXXX-XXXX-XXXX
 
218
  // Some code to be preserved when regenarating
 
219
  // END Code pocket ID : XXXX-XXXX-XXXX-XXXX
 
220
 
 
221
  Je pouvais avec Examdiff Pro exclure de ma comparaison les "Code pockets" au
 
222
  complet (pas seulement les tag mais aussi le contenu du code pocket avec un
 
223
  regular expression.  Voil
 
224
 
 
225
 
 
226
* fix bug on tp with 3-way, press S::
 
227
 
 
228
    QPixmap: Invalid pixmap parameters
 
229
    QPainter::begin: Cannot paint null pixmap
 
230
    QPainter::setPen: Will be reset by begin()
 
231
    Segmentation fault
 
232
 
 
233
 
 
234
 
 
235
* with option --single it would be nice to be able to say that the file should
 
236
  be displayed on the right side and not the left, this would be nice for
 
237
  directory diffs when clicking on a hunk where there is only a file on the
 
238
  right.  Right now the file appears on the left anyway, which just looks wrong.
 
239
 
 
240
 
 
241
 
 
242
* Maybe create a new return code for the combination of ``--decision`` and
 
243
  ``-D``::
 
244
 
 
245
    int XxApp::exec()
 
246
    {
 
247
       if ( _dontShow ) {
 
248
          // If we asked for a decision, at least output something.
 
249
          // FIXME: maybe this should become NODIFF?
 
250
          if ( _cmdline._forceDecision == true ) {
 
251
             std::cout << "NODECISION" << std::endl;
 
252
 
 
253
 
 
254
 
 
255
* prepare to build with qmake
 
256
 
 
257
 
6
258
 
7
259
* add the horizontal marker to the options dialog as well.
8
260
 
9
261
 
10
 
 
11
 
*  xxdiff test/tabs/w2a test/tabs/w2b::
 
262
* xxdiff test/tabs/w2a test/tabs/w2b::
12
263
 
13
264
        while ( true ) {
14
265
     #ifndef XX_INTERNAL_DIFFS
17
268
           results in // harmless but nonetheless annoying empty diff error
18
269
           messages.
19
270
           QString line = outputs.readLine();
20
 
     
 
271
 
21
272
 
22
273
* Known problem:
23
 
  
 
274
 
24
275
  - set tab width to 0
25
276
  - diff files which have tabs and spaces but other characters the same
26
277
  - set hordiff threshold low enough
27
 
  
 
278
 
28
279
  We get minimum hordiff width to 1 with this combination.
29
280
  I think we would need to recompute the diffs.
30
281
 
44
295
 
45
296
 
46
297
Goals for 4.0 stable release:
47
 
------------------------------
 
298
=============================
48
299
 
49
300
   * Finish scrollbars resizing for paned merged view.
50
301
   * Improve error recovery in rcfile parsing.
51
302
 
52
303
 
53
304
Promo
54
 
~~~~~
 
305
=====
55
306
 
56
307
- promotion on xxdiff webpage before release:  ask ev and gd for a quote, how
57
308
  many developers, etc.
58
309
 
59
 
- send email to GnuPG mailing-list about xxdiff-encrypted script
60
 
 
61
 
 
62
 
 
63
 
 
64
 
* finish xxdiff-patch, come on
65
 
 
66
 
  * deal with delete and add
67
 
 
68
 
  * Q: what do we do when patch fails?  How do we treat it?
69
 
    must read the output messages of patch and warn the user.
70
 
 
71
 
 
 
310
- send email to GnuPG mailing-list about xx-encrypted script
 
311
 
 
312
 
 
313
 
 
314
 
 
315
 
 
316
Other
 
317
=====
72
318
 
73
319
* write a script that can preview ``xdelta patch``.
74
320
 
133
379
 
134
380
 
135
381
 
136
 
 
137
 
 
138
 
 
139
 
Mini-Project: cvs.py -related
140
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
141
 
 
142
 
- put cvs.py out in the public and implement xxcvs properly.
143
 
 
144
 
- xxcvs, try my quick implementation and publish it!
145
 
 
146
 
- finish ignore blank lines support (check everything, write test cases)
147
 
 
148
 
- CVS
149
 
 
150
 
  * xxcvs update!
151
 
 
152
 
  * python cvs lib, move some of xxcvs into a lib
153
 
 
154
 
  * helper script for cvs (kind-of like cervisia, but text mode)
155
 
     * cvsx lsvtree
156
 
     * cvsx links --build  -> creates links from desc files
157
 
     * cvsx links --link  -> creates desc files from links
158
 
     * cvsx links --sync  =~ --build and --link
159
 
     * cvsx grep/search for version no.
160
 
  * series of scripts to try to emulate DL_ scripts in cvs
161
 
 
162
 
- start cvspy sourceforge project
163
 
- add python cvslib to future projects
164
 
 
165
 
 
166
 
 
167
 
 
168
 
 
169
 
 
170
 
 
171
 
 
172
 
 
173
 
 
174
382
2 prorities for review:
175
383
 
176
384
   1) make able to make comments rapidly
372
580
 
373
581
(Font Drawing Problem)
374
582
 
 
583
   * There is a bug whereby editing the font in the dialog does not work
 
584
     properly, the dialog does not show the appropriate font.  This occurs when
 
585
     the font is set in .xxdiffrc.  Version: 3.1, the contents of the resources
 
586
     file was::
 
587
 
 
588
        FontText: "Lucidatypewriter,14,-1,2,50,0,0,0,1,0"
 
589
        Accel.Exit: "Alt+Q"
 
590
 
375
591
   * Italics fonts sometimes don't draw all that they should be.
376
592
 
377
593
 
950
1166
>
951
1167
> Martin Blais wrote:
952
1168
> >
953
 
> >�On Monday 21 January 2002 07:06, you wrote:
954
 
> >�> Hi,
955
 
> >�>
956
 
> >�> I have a question about xxdiff
957
 
> >�> (http://sourceforge.net/projects/xxdiff/).
958
 
> >�>
959
 
> >�> Is it possible to change the merged file
960
 
> >�> manually. I mean to be able to add text
961
 
> >�> that is not in any of the 2 or 3 files
962
 
> >�> compared. This is sometime very useful.
963
 
> >�>
964
 
> >�> I haven't see that (clearly) in the online
965
 
> >�> documentation. I think this will be a very
966
 
> >�> interesting item for the FAQ.
967
 
> >�>
968
 
> >�> I'm using ClearCase at work and from this
969
 
> >�> point of view clearmerge is really good.
970
 
> >�> But for me, I would prefer some tool under
971
 
> >�> GPL.
 
1169
> > On Monday 21 January 2002 07:06, you wrote:
 
1170
> > > Hi,
 
1171
> > >
 
1172
> > > I have a question about xxdiff
 
1173
> > > (http://sourceforge.net/projects/xxdiff/).
 
1174
> > >
 
1175
> > > Is it possible to change the merged file
 
1176
> > > manually. I mean to be able to add text
 
1177
> > > that is not in any of the 2 or 3 files
 
1178
> > > compared. This is sometime very useful.
 
1179
> > >
 
1180
> > > I haven't see that (clearly) in the online
 
1181
> > > documentation. I think this will be a very
 
1182
> > > interesting item for the FAQ.
 
1183
> > >
 
1184
> > > I'm using ClearCase at work and from this
 
1185
> > > point of view clearmerge is really good.
 
1186
> > > But for me, I would prefer some tool under
 
1187
> > > GPL.
972
1188
> >
973
 
> >�nope, you cannot. the rationale behind this is that I don't
974
 
> >�want xxdiff to become an editor.
 
1189
> > nope, you cannot. the rationale behind this is that I don't
 
1190
> > want xxdiff to become an editor.
975
1191
>
976
1192
> It would be a logical evolution, wouldn't it?
977
1193
> I mean for the merge window only.
978
1194
>
979
 
> >� i'd like to eventually make it able to do very simple
980
 
> >�editing (and to limit it to that).
 
1195
> >  i'd like to eventually make it able to do very simple
 
1196
> > editing (and to limit it to that).
981
1197
> >
982
 
> >�you can, however, click on the filename widgets to put
983
 
> >�them in the clipboard and then paste into a shell for
984
 
> >�editing the file.
 
1198
> > you can, however, click on the filename widgets to put
 
1199
> > them in the clipboard and then paste into a shell for
 
1200
> > editing the file.
985
1201
>
986
1202
> Not very friendly way and error prone I suppose.
987
1203
>
988
 
> >�let me know the minimal editing capabilities you would
989
 
> >�like to have and i'll consider it on the todo list.
 
1204
> > let me know the minimal editing capabilities you would
 
1205
> > like to have and i'll consider it on the todo list.
990
1206
>
991
1207
> For me the minimum would be to able to add a complete
992
1208
> line anywhere in the merged window.
1020
1236
> PS: tu parles francais?
1021
1237
> --
1022
1238
> D2SET Scientific and Technical Non profit Association
1023
 
> �http://www.d2set.org/
1024
 
> �mailto:d2set@d2set.org
 
1239
>  http://www.d2set.org/
 
1240
>  mailto:d2set@d2set.org
1025
1241
>
1026
1242
> Artificial Anthill Project
1027
 
> �http://www.aanthill.org/
1028
 
> �mailto:aanthill@aanthill.org
 
1243
>  http://www.aanthill.org/
 
1244
>  mailto:aanthill@aanthill.org
1029
1245
>
1030
1246
 
1031
1247
 
1224
1440
 
1225
1441
   * Idea (plante@iro): Pour faire des diffs de fichiers binaires...
1226
1442
     Sers-toi d'un programme qui fait des hexdumps (sur linux il y a xxd), et
1227
 
     fais le diff la-dessus. �a marche bien.
1228
 
 
1229
 
 
1230
 
 
1231
 
 
1232
 
 
1233
 
 
 
1443
     fais le diff la-dessus. Ça marche bien.
1234
1444
 
1235
1445