1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752
|
==================
TODO: xxdiff
==================
.. contents::
..
1 Next Release
1.1 Priorities
1.2 Qt4
2 Less Urgent, but do it soon too
3 Look at ``wiggle`` integration, it seems like a great idea
4 Goals for 4.0 stable release:
5 Promo
6 Other
Next Release
============
Priorities
----------
- xxdiff: Make xxdiff recursive able to list all the files when a
directory is only on one side. Walk and enumerate the files of an
inserted or deleted directory.
- xxdiff: Fix geometry window sizing problem.
- xxdiff: Convert it to port to Qt4 and support unicode
- Windows port, use the patch from Trevor Harmon
- MAC port
- Patch output support?
Qt4
---
- Bug with saving with ignored patterns: Which side gets selected?
Ah I see.
The problem is a definitional one.
When you say "Save as..", it is not clear what to do with the ignored regions, xxdiff should warn about that.
It's indeed a problem...
The issue is that xxdiff does not output sed commands... it selects the regions and saves the results directly.
You should probably not use the ignore switch with save... I never considered that case.
BTW, "Save As Right" does not mean anything about selecting text from the file on the right, it is the same as "Save As"
and selecting the filename of the file on the right.
THanks for the bug report, I'll add it to the TODO list.
cheers,
Lee Gramling wrote:
> > Martin,
> > Thanks for your quick response, I am sure its just my expectations that
> > are wrong but here is better description:
> >
> > Run the following command on the files listed below:
> > xxdiff d2.iv d1.iv -A "-I position.*"
> >
> > xxdiff when show the following differences:
> > d2.iv d1.iv
> > position 50 50 200 position 50 50 280 #these are
> > ignored and not highlighted
> >
> > angle 3.19 angle 1.57
> >
> > Text3 {
> > string =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> >
> > Select the right angle 1.57
> > and the left Text3 block
> >
> > Then do a File->Save as right
> > File->Redo diff
> >
> > Now the files looks like this:
> > d2.iv d1.iv
> > position 50 50 200 position 50 50 200 #d1.iv has the
> > wrong value for position
> >
> > angle 3.19 angle 1.57
> >
> > Text3 { Text3 {
> > string = string =
> > GlobalField { GlobalField {
> > type "SFTime" type "SFTime"
> > realTime realTime
> > } }
> > . realTime .realTime
> > } }
> >
> > The ignored position line has been copied to the right file (I would not
> > expect this).
> > The selected right angle 1.57 is correct and the left selected Text3
> > line has been added as expected.
> >
> > I guess what I expect is more like what would happen if you ran diff
> > with the ignore
> > diff d2.iv d1.iv "-I position.*"
> > 15c15
> > < angle 3.19
> > ---
>> >> angle 1.57
> > 25,32d24
> > < Text3 {
> > < string =
> > < GlobalField {
> > < type "SFTime"
> > < realTime
> > < }
> > < . realTime
> > < }
> >
> > The ignored lines do not get output as sed commands.
> >
> > Thanks for your time.
> >
> > Lee
> >
> >
> > d1.iv:
> > Separator {
> > PerspectiveCamera {
> > position 50 50 280
> > }
> > Text3 {
> > string "undefined" =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > RotationXYZ {
> > axis Z
> > angle 1.57
> > }
> > Text3 {
> > string =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > }
> >
> > d2.iv
> > Separator {
> > PerspectiveCamera {
> > position 50 50 200
> > }
> > Text3 {
> > string "undefined" =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > RotationXYZ {
> > axis Z
> > angle 3.19
> > }
> > Text3 {
> > string =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > Text3 {
> > string =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > }
> >
> >
> >
> > On Nov 19, 2007 10:04 AM, Martin Blais <blais@furius.ca
> > <mailto:blais@furius.ca>> wrote:
> >
> > Hi Lee
> > Can you send a step-by-step description to reproduce the problem?
> > I don't quite understand your explanation below.
> > (I would highly doubt a bug in that part of xxdiff at this point.)
> > thx
- Apply Trevor Harmon's patch for the port to Qt4.
- Finish half-started save-to-patch feature:
* Add an option to the xxdiff GUI to invert the selections, or to save the
negative of the selections to a file. Using this, we could split a file in
half. This should not be available in 3-way diffs mode.
- Fix this bug::
Grant McDorman <grmcdorman@gmail.com>:
I've got xxdiff running - with patches on Win32 with Qt Free 4.2.0 (and
mingw). Fixes were required, not suprisingly.
There was also what appears to be a real bug that showed up. In
hordiffimpl.cpp, there's a loop that starts like this:
while ( x > -1 && y > -1 ) {
#ifdef XX_LOCAL_HDIFF_DEBUG
cerr << x << " " << y << " = " << htable[ x + y*tlen0 ] << endl;
#endif
if (
( htable[ x + y*tlen0 ] == ( htable[ x-1 + (y-1)*tlen0 ] + 1 ) /*||
htable[ x + y*tlen0 ] == htable[ x-1 + (y-1)*tlen0 ]*/ ) &&
ctext0[x] == ctext1[y]
However, the problem is if x or y becomes 0, then one can have a negative
subscript on the second htable index. This can cause crashes. I fixed by
making it '> 0' instead of '> -1'.
There were also layout problems, such as the headers (filename/line number
way too bing); it's not clear to me if this is a Qt4 problem or a Win32
problem.
There are still a few minor problems: the file names start up blank (if
one does 'replace file' from the file menu, it's labelled correctly); and
the colour swatches in the display options dialog, Colors tab, don't
change colour at all. I haven't tracked those down yet.
I can send you the patch on request - or submit to SF.
Less Urgent, but do it soon too
===============================
* Add a '-w' option to invoke.py (!?), to ignore whitespace changes easily.
* When the comments file has not changed, warn the user that he did not appear
to have saved the file.
* It would be awesome if select.py had an option to select by file-type
(e.g. running “file”). Open a child running a “file” command and feed it the
filenames one-by-one rather than starting a new one everytime.
* Look at fixing the bugs in xxdiff/test/bugs
* For MAC OSX: if there are no files specified, invoke a special double- file
dialog chooser to graphically select which files to diff.
* xx-svn-diff: Comments file: To add new files to the comments file:
a) Check if at least one line of the comments file is the same as any line of
the status OR if the file is empty
b) if so, add all the status lines tha tdiffer at thte end of the comments
file (with an empty line in between)
c) otherwise we do not append the new statii lines
* Bug: toggling "Format clipboard text" at runtime does not seem to have an
effect.
* Fix [1200496] Diff Errors reported with certain text files
* xx-svn-diff: Implement fetching any two revisions and displaying the filelist
and the diffs graphically for those changes.
* See open bug [1174957] Odd behavior when "-O" and "-E" used together: When
--exit-if-no-conflicts and --merged-filename are specified together, and there
are no conflicts, output the result file to the merged filename.
* There is a slight rendering bug with my current font (see png file under /bugs)
* Define a clearer list of verbosity levels that is consistent across all the
scripts and change the levels.
* Automatically log output to a log file in the backups directory if the backups
are enabled, that would rock.
--------------------------------------------------------------------------------
(Scripts)
* When xxdiff is invoked with --decision and -D, which answer should result?
Right now we output NODECISION, but perhaps ACCEPT would be more appropriate?
I'm not sure.
* Write an asynchronous background loop in xformloop for slow processes, where a
number of diffs could accumulate in the background and be ready to diff while
whatever is being done to produce the diffs keeps running. Grab this from my
good old exp preview. Put this in ``lib/python/xxdiff/async.py``
(Note: this goes hand-in-hand with the diff'ing of arbitraty SVN revisions, as
we will have to fetch files from the network and this might be slow.
Implement both of these features at the same time.)
* xx-svn-diff: When the parent process gets killed, make sure to kill the
editor as well, otherwise it can be really annoying because this leaves swap
files around if we restart manually killing the editing window (which can
happen if you leave it in the background).
* Provide a way to invoke xxdiff with alternate diff programs.
- Using this code, provide code to create alternate diff programs that compare
pairs of things, with or without subdiffs, by outputting POSIX diff output.
* xx-rename: With respect to case sensitivity, supports the smart
replacement behaviour that is present in GNU emacs.
* Implement a better side-by-side diff that includes line numbers and context.
The current side-by-side diff sucks. One of the things that could be done
easily is reuse diff --side-by-side without compressing, adding the line
numbers by hand, and then compressing by hand too.
- Add an option to generate normal diffs rather than side-by-side.
* xx-patch: Finish It!
* You have to deal with 'delete' and 'add' cases.
* Q: what do we do when patch fails? How do we treat it?
must read the output messages of patch and warn the user.
* xx-svn-diff: TODO
* --launcher: Create simple PyQt or CURSES GUI for listing files from ``svn
status``, on which you can click to view the diffs.
* Implement including differences from the ancestor file with 3-way diffs.
* Implement viewing differences between any two revision in the repository.
* Wouldn't it be nice to have a decision mode here? Maybe, maybe not. You
can save as merged if desired, the merged filename is set to the output
filename.
* Fix these old subprocesses by using the subprocess module::
banane:~/p/.../python/xxdiff$ igrep os.popen .
./scripts/encrypted.py: fin, fout = os.popen2(decodecmd % m, 'w')
./scripts/encrypted.py: fin, fout = os.popen2(cmd, 'w')
./scripts/cvsdiff.py: cin, cout = os.popen2(
./scripts/patch.py: cin, cout = os.popen2(cmd, 'rw')
* Implement --single-right: we should be able to display single files on either
side. You should fix xx-match after that, so that it passes the correct
options to xxdiff.
* Consider putting a check for binary files in xxdiff.invoke.* and raise a
RuntimeError if the files aren't text.
* xx-rename: We should able to read renames from a file, two names by line, or
something similar.
--------------------------------------------------------------------------------
* Idea: we could modify xxdiff so that when we reload, we could output RELOAD
and that could mean for the client to redo some task in the background, then
let xxdiff know to reload after that. This would allow xxdiff to communicate
with the parent process. This should actually be part of a larger protocol
for client to communicate with xxdiff and vice-versa. This is a cool idea,
but a lot of work for very little benefit.
* Check if this bug is gone::
I set up xxdiff-subversion on my workstation following web page at
http://xxdiff.sourceforge.net/local/doc/xxdiff-subversion.html. It works
just fine for svn diff command. But for svn up, if there is a conflict,
xxdiff will pop up showing three way difference. When I close xxdiff
window, I found my working copy of that conflicting file became blank!
So I lost all my changes in that file!
My current solution is not to set diff3-cmd in ~/.subversion/config file.
--Long
PS: I am using FreeBSD.
pkg_info -Ix xxdiff
xxdiff-3.0.3 QT interface to view/merge differences between 2 or
3 files
pkg_info -Ix subversion
subversion-1.3.0_3 Version control system
* From Michalis Giannakidis, mgiann@beta-cae.gr
Do this:
What, here in our company, find useful about cvsxxdiff is:
o) cvsxxdiff is one file. No python module directory or initialization is
requierd.
o) Do a 'cvs up; cvsxxdiff' before commit to see all the local changes we have
made.
o) Do 'cvs up; cvsxxdiff -b 1 file.c' to see the last chages that were made on
a file by a colleague.
o) We often need to track bugs in our code. This means going back to previous
revisions, thus doing ex: 'cvsxxdiff -b 1 -b 2 file.c' to compare the
previous with the 2nd previous revision. (similar with cvsxxdiff -r 1.1 -r
1.2 file.c)
o) The utility prints in the standard output the logs between revisions i
and j ( ex: cvsxxdif -b i -b j file.c)
One script to do it all.
Look at ``wiggle`` integration, it seems like a great idea
==========================================================
From: Ken.MacLeod@radisys.com <Ken.MacLeod@radisys.com>
To: blais@furius.ca
Date: Aug 10, 2006 9:17 AM
Subject: xxdiff: patch wiggling
Reply | Reply to all | Forward | Print | Add sender to Contacts list | Delete this message | Report phishing | Show original | Message text garbled?
A long while back in 2003, you wrote,
http://www.uwsg.iu.edu/hypermail/linux/kernel/0203.2/1177.html
Not long after, Niel Brown announced 'wiggle',
http://www.uwsg.iu.edu/hypermail/linux/kernel/0305.2/0762.html
Niel mentions one of the shortcomings in wiggle is that you can't "see"
what it's done or will do. Here's where xxdiff can pick that up. These
are just thoughts off the top of my head, sorry I won't have patches
forthcoming with implementation :-/
I'd like to see the entire patch in the left pane, probably in the format
used by gitweb[1] or gitk[2, screenshot in 3].
Selecting a patch hunk on the left brings up the corresponding source in
the right pane, with the "new" changes highlighted (with horizontal diff,
natch :-). The old changes are not necessary, though a three-pane view
could have them on the left.
The hunks in the patch pane should be marked according to their merge
status, ie. green for success, yellow for offset, orange for fuzz, and red
for failed. A "check mark" would be nice for hunks that have been
confirmed and/or fixed up.
If a patch fails because the file cannot be found due to a rename, the
merge path should be editable. (Auto-rename is possible if both trees are
available.)
Wiggle's algorithm is good for finding better matches.
Changes should not be applied until selected from a menu.
After wiggling, the patch should be saved so that it can be emailed. The
updated patch should now cleanly apply against the tree it was wiggled to
(ie. counts and offsets corrected, a la recountdiff).
OK, that's all I can brain dump for now. Of course, it wasn't until after
writing it that I see xx-patch, so, take whatever good bits seem to make
sense :-)
-- Ken
[1]
http://www.kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=log
[2] http://ozlabs.org/~paulus/gitk/
[3] http://lwn.net/Articles/140350/
--------------------------------------------------------------------------------
- Install xxdiff on windows, when Qt4 non-commercial comes out
- try beyondcompare::
Si jamais tu veux retravailler sur xxdiff, je viens de trouver le canif
suisse des diffs graphiques, tu manqueras pas d'id\x{00E9}es pour xxdiff
avec \x{00E7}a... Absolument incroyable (mais c'est un produit
commercial). \x{00C7}a s'appelle "Beyond Compare" de Scooter Software. Le
genre de programme qui te fait dire "enfin sti". \x{00C7}a compare aussi des
r\x{00E9}pertoires (r\x{00E9}cursivement itou, avec des diffs par fichier),
et c'est aussi incroyablement facile de faire un merge. Vraiment
g\x{00E9}nial..
http://www.scootersoftware.com/
* Bugs with horizontal diffs:
However, I do have a suggestion. Your code does not
seem to be using a logic such as the Ratcliff/Obershelp
pattern recognition algorithm, which is adopted by some
other common graphical diff tools. Using such a logic,
they search for the longest common substring between
two strings. The match is then used as an archor,
around which they would recursively do the same for the
left and right remaining pieces.
New feature, ignore regexp patterns::
Bonjour Martin,
Comme convenu voici le feature que je trouvais utile dans Examdiff Pro :
- Regular Expression support dans le champs Ignore.
Exemple :
Faire une comparaison de 2 fichiers contenant des UID que je ne veux pas considérer comme différent lors de la comparaison.
Contexte :
j'avais a comparer des fichiers generes par un generateur de code java. les fichiers contenait des code pockets du genre:
// BEGIN Code pocket ID : XXXX-XXXX-XXXX-XXXX
// Some code to be preserved when regenarating
// END Code pocket ID : XXXX-XXXX-XXXX-XXXX
Je pouvais avec Examdiff Pro exclure de ma comparaison les "Code pockets" au
complet (pas seulement les tag mais aussi le contenu du code pocket avec un
regular expression. Voil
* fix bug on tp with 3-way, press S::
QPixmap: Invalid pixmap parameters
QPainter::begin: Cannot paint null pixmap
QPainter::setPen: Will be reset by begin()
Segmentation fault
* with option --single it would be nice to be able to say that the file should
be displayed on the right side and not the left, this would be nice for
directory diffs when clicking on a hunk where there is only a file on the
right. Right now the file appears on the left anyway, which just looks wrong.
* Maybe create a new return code for the combination of ``--decision`` and
``-D``::
int XxApp::exec()
{
if ( _dontShow ) {
// If we asked for a decision, at least output something.
// FIXME: maybe this should become NODIFF?
if ( _cmdline._forceDecision == true ) {
std::cout << "NODECISION" << std::endl;
* prepare to build with qmake
* add the horizontal marker to the options dialog as well.
* xxdiff test/tabs/w2a test/tabs/w2b::
while ( true ) {
#ifndef XX_INTERNAL_DIFFS
// FIXME here we should change the code so that reading a line
includes // the carriage return characters within the line. This
results in // harmless but nonetheless annoying empty diff error
messages.
QString line = outputs.readLine();
* Known problem:
- set tab width to 0
- diff files which have tabs and spaces but other characters the same
- set hordiff threshold low enough
We get minimum hordiff width to 1 with this combination.
I think we would need to recompute the diffs.
.. end
(Horizontal Diffs)
- post-process, idea from Derrick Moser, slide to the left until a word boundary
is met on either side or is impossible
Goals for 4.0 stable release:
=============================
* Finish scrollbars resizing for paned merged view.
* Improve error recovery in rcfile parsing.
Promo
=====
- promotion on xxdiff webpage before release: ask ev and gd for a quote, how
many developers, etc.
- send email to GnuPG mailing-list about xx-encrypted script
Other
=====
* write a script that can preview ``xdelta patch``.
* add a command to keep spit out the output of diff in a window (useful for
debugging as well)
* add an option to edit the file from the popup menu, it's more direct like
that than using the File menu.
- same for Save As...
- also add a "save as and edit" option.
* From qt-3.2::
QPainter's complex drawText() function has been highly
optimized. Despite its support for complex unicode scripts, it now
performs better than its less unicode-capable counterpart in Qt 2.3.
So I should port to use that instead.
* find a way to use the doc.txt docutils format for all documentation
(you can generate PDF with docutils and pdflatex already).
* xxdiff -D that succeed leaves a mutex destroy failure message... find the bug!
2) make able to see if there are any changes at all, to do this, we'll
compare all chars of the buffers by hand, if there is ANY differences that
it is different; check size of buffers first
* cursor is not following scrolling anymore, FIX THIS this is annoying when
using the keyboard
* change config to use XML instead, add 'xxdiff --dtd' to obtain dtd.
* change key binding for variable text selection
* check out bug from (wesleysmith)
If I select the line from the first column and then
run "Save as left", I get a dialog that says "The
selections are all on this file. Save anyway?". If I
choose either the middle or right column and run "Save
as left", then I don't see this message. I also see this
message if I select the middle column and then
run "Save as middle". It seems to me that this
message doesn't really apply to the unmerge3 case,
and should be disabled.
Also, in the File menu, "Save as left" and "Save as
middle" are activated, but "Save as right" is grayed out.
That's odd because all three columns are the same file.
Seems like they should all be available, or maybe only
one, with the name changed to "Save".
A similar problem is seen with the "Edit ..." menu items
on the File menu.
2 prorities for review:
1) make able to make comments rapidly
2) make able to see if there are any changes at all (turn off all ignore options at once?)
or perhaps look at the diff output
* quote output of clipboard header format \n's to be able to read back the
xxdiffrc file.
* create separate popup menus for different builders instead of ifdef
technology
* add "Edit Merged Filename" to resolve conflicts.
* implement --exclude and --exclude-from for directories, it would be really
useful for CVS directories
* implement arbitrary secondary selection, with filename in the clipboard,
for making easy merge comments, that would print filename, and pasted text
* Special "File" dialog with display and real filenames, with save as,
replace and edit buttons.
* try this: with horizontal diffs, remove two first chars of a line whose
indentation has changed, the horizontal diff will span from the beginning
of the line. this is not desired.
* in 3-way diffs mode, when you ignore one file, you must recompute the
horizontal diffs between the other two files only! this would be very
useful actually.
* Add Accel.Quit alias for Accel.Exit
* xxdiff --version now results in the following error msg from Qt 3:
Mutex destroy failure: Device or resource busy
fix it. this doesn't seem to have other implications.
(Split swap join improvements)
* Michael idea: split swap join where the cursor line is located
(Urgent)
* Update documentation with this version.
* Make per-hunk display ignore toggleable
// * ./xxdiff mine util.h app.h Segfaults!!!! fix this??!
// i think i just fixed it already
* XxText should accept() or ignore() its events.
* When in unmerge mode, saveAsMerge feature initializes merge file name as 01234567.
* Add format for filename label as well, useful for making merge comments.
* Invert logic of "Remove Empty Conditionals", that should be the default.
(Per-hunk Ignore Whitespace)
* Not sure that the split-swap-join vs. ignore-display behaviour is correct,
perhaps should become green anyway when split?
* Maybe we can use the horizontal diffs computation to speed up the per-hunk ws?
* Implement partial hunk ignore ws, newlines have to match (but you can skip some).
(Ignore Blank Lines)
* Consider.... should we do something about ignored SAME sides when saving? I
mean, now we just choose side 0, but perhaps we want to give the user
control over that?
(Misc)
* scrolling with the scrollbar doesn't seem to restrict the cursor anymore
* Some of our display algorithms allow the user to effectively ignore certain
hunks. If all diff hunks are ignored by our display algorithms, could we
prevent xxdiff from even showing up at all? And if we do want it to remain
visible anyway, I think we should somehow put markers indicating at least
where whitespace changes occur anyway, in the margin or something, just to
be able to figure out if a file really does has some [whitespace] changes
or nothing at all.
* The cursor is not restricted by scrolling using the scrollbars anymore!!!
* When pasting to the clipboard, turn tabs into spaces, for much better
results when pasting! remember, the clipboard formatting can otherwise
change it.
* Paned view problem, the hash pattern that is drawn is not cleared before it
is drawn, switch workspaces with paned view and you'll see immediately.
(Colors)
* There is no SelectedNonly color!
(KDE Port)
* Trevor:
By the way, I forgot about a bug in my patch. If you go to Help|User's
Manual and click on the "GNU website" link at the end, then a web browser
opens just as it should. But if you click on a local link, such as
"Introduction", then the web browser again opens, instead of just jumping
to the point in the text. Help me remember to fix this sometime.
* ideas from Martin Pool (mbp@samba.org)
>
> - Quick keypresses to switch to next/prev file
try C-n, C-p, n, p, etc. (see the menus for accelerators)
or do you mean, a key to open the next/prev file in another diff?
if so, that's a good idea, i'll put it on the todo list
>
> - Single button to ignore *~, .#*, CVS, and similar garbage. (The best
> way I found was to edit the diff options.)
i want to do that eventually, that's on the todo list as well
* fix this problem:
Hello Martin,
there's someone reporting that error here:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=141809
and I do suspect it to be a Qt bug (happens on my box too btw.). I
searched the web a bit, but couldn't find any solution. Here's the place
where the error is reported btw.:
http://www.linux.cz/lists/archive/linux/131195.html
Does that happen on your box too? Is it a Qt problem?
*t
-----------------------------------------------------------------------
Tomas Pospisek
sourcepole - Linux & Open Source Solutions
http://sourcepole.com
Elestastrasse 18, 7310 Bad Ragaz, Switzerland
Tel:+41 (81) 330 77 13, Fax:+41 (81) 330 77 12
------------------------------------------------------------------------
* Cool idea: tooltip when hovering over a hunk should show the diff marker
text. Or perhaps a popup menu could pop up the textual diff output.
(Build)
* Try converting build system to use Jam instead of tmake.
* test recent changes to rendering code to see if it solves the problems with
qt-3 rendering.
(Automatically-Saving Resources)
* Some ppl want to have resources saved automatically. Consider an
implementation.
(Self Debugging and Error Reporting)
* Print commandline arguments when crashing with an internal error, as well
as resources state if possible.
(Font Drawing Problem)
* There is a bug whereby editing the font in the dialog does not work
properly, the dialog does not show the appropriate font. This occurs when
the font is set in .xxdiffrc. Version: 3.1, the contents of the resources
file was::
FontText: "Lucidatypewriter,14,-1,2,50,0,0,0,1,0"
Accel.Exit: "Alt+Q"
* Italics fonts sometimes don't draw all that they should be.
(Memory Checking)
* Run valgrind and mpatrol once again to stabilize.
(Raw diff output)
* Implement a window to display the raw diff output. Some people may enjoy
this. kompare (kdiff2) has this.
* Implement a small widget that would display the current diff output chunk,
or perhaps put it in the tooltip.
(Misc)
* When using replace file on a local file, "./" is added before the displayed
filename, find out why, and eradicate if possible.
* Convert arrays of string to use a QStringList in many places
(e.g. cmdline.h)
* I think we could free the buffers before reloading them on redo diff.
* set up rsync to update SF automatically from co version at DIRO:
rsync -Cavz -e ssh . blais@xxdiff.sourceforge.net:/home/users/b/bl/blais/xxdiff/xxdiff-web
(CVS unmerge conflicts)
* It would be nice that if you click on the filename labels it wouldn't add
the "(SOMEFILE)" into the clipboard.
(Printed output)
* There is currently no generator of xxdiff-like output for printing. See if
the guts of xxdiff can be reused to implement one, and if so, add an xxdiff
feature to output to postscript or something.
(Support for Encryption)
* Add possibility to specify a fd for an alternate input for a second
file. This way one can almost write a script that runs diff on two memory
buffers. But how does diff do it then? Maybe that could be supported with
linking with the GNU diff code.
Fix warnings reported from Geoff.Kingsmill at compaq compiling with g++-3.x:
>
> - The following warnings were displayed:-
>
> text.cpp: In method `virtual void XxText::drawContents(QPainter*)':
> text.cpp:263: warning: `int py' might be used uninitialized in this
> function
>
> diffs.cpp: In method `uint XxDiffs::countRemainingUnselected()
> const':
> diffs.cpp:674: warning: `XxHunk curHunk' might be used uninitialized
> in this
> function
> diffs.cpp:675: warning: `XxLine::Type curType' might be used
> uninitialized in
> this function
>
> In file included from resParser.cpp:703:
> resParser.l.c: In function `int XxResParserNS::__yylex(YYSTYPE*)':
> resParser.l.c:931: warning: label `find_rule' defined but not used
>
> getopt.c: In function `_getopt_initialize':
> getopt.c:389: warning: unused parameter `argc'
> getopt.c:390: warning: unused parameter `argv'
* When the selections change the merged view horizontal scrollbars should be
adjusted.
* Resizing line numbers label leaves white border c**d behind, perhaps it
should clear the background before drawing.
* xxdiff still has problems displaying accented chars.
* Bug: not all control paths in the text rendering engine are setting
skip. The merged lines counting routine either.
* Bug in next difference: use "mine older", then n many times.
At some point the n command does not bring you to the beginning of a new region.
* Merged length in lines is incorrectly calculated.
* The line number labels are not initialized properly on startup.
* Add cmdline option to show pane-merged view upon startup.
* Consider using the SUP colors for the empty lines.
* Scrollbar would be better if it always would be able to show at least a one
pixel row at the very bottom.
* Color documentation, shadowed might be "highlighted"... fix it.
* You need to figure some decent scrolling heuristic for the merged view to
follow the text views, especially when they are radically different sizes.
Right now it just follows the cursor.
* Post-central testing: test setting tab width, see if horizontal scrollbars
adjust automatically.
* Make rpm spec generate documentation automatically.
* Remove uint, put standard "unsigned int" instead.
* In merged view, the stippled pattern doesn't scroll horizontally.
(Multiple Horizontal Diffs)
* Can we actually do something more about 3-way horizontal diffs?
Compute the 2-way and then merge results?
* We could remove empty horizontal regions from horizontal diffs? They don't
hurt but we could draw more efficiently without them if we don't use them.
* Perhaps draw a little dent on the side where an insertion/deletion occured.
With an option.
* Perhaps group all the horizontal diffs display options together.
* > Allen Barnett wrote:
> >
> > On Thursday 08 November 2001 12:25 pm, you wrote:
> > > Allen Barnett wrote:
> > > > One feature which would be helpful to me would be the presence of a
> > > > 'numerical fuzz' option in the horizontal difference display. If a line
> > > > contains a floating point number, but whose numerical difference is below
> > > > a certain tolerance, it would not be marked as a file difference. For
> > > > example:
> > > >
> > > > 1.2345678E-01 | 1.2345679E-01
> > > >
> > > > would not be flagged if the fuzz value is "<10^-6". (Can you tell I do a
> > > > lot of FORTRAN programming?)
> > >
> > > what if this was only implemented for the beginning of the horizontal
> > > difference? would that be good enough?
> >
> > Typically, my output looks like line after line of:
> >
> > 0.182827585 0.140213637 0.113408089 0.140213637 0.106706702 0.0859152186
> >
> > One or more of these numbers on a line may differ between runs of the code.
> > Further reflection on my part suggests that you'd have to parse the line to
> > find the numbers. Perhaps this isn't really a practical idea after all?
>
> I was discussing ideas over lunch with colleagues: soon i'll implement the
> string edit lcs algorithm for computing multiple horizontal diffs. one idea
> that came out is that I could carry this out on a per-token instead of a
> per-character basis. The token splitting I'll implement is arbitrary, but I
> will implement it based on words (where capital letters inside a word splits
> it). The whitespace you show above would split your numbers into different
> tokens.
>
> This means that if I apply a "numerical ignore" on the respective horizontal
> diff hunks of a line it would do exactly what you want, assuming that the words
> (i.e. numbers) are separated by whitespace. The numerical comparison will be an
> option that you can configure in your resources.
(Bugs)
* In resources::setQuality... setOneOfInCommand, does it remove the options
that are present if the one to set is empty?
* Once xxdiff is up, if you change the options for the diff command and give
it options that make it fail, no error message is printed, no dialog,
nothing, it just goes empty.
* Figure out why when a char isn't read by lex/yacc it is printed on stdout,
and fix that, it's annoying and stupid
* Redo diff clears selections! can we do something about it?
(Improve Directory Diffs)
> * Improve the comparison options for directories. Files and Dirs
> should be selectively comparable for time, mode, owner,group,
> and raw and filterd data.
> I could write the backend of this part, if you like to include
> this ability, but I can't write the front end (gui) part.
* Make xxdiff able to go to the parent directories
While comapring two directory trees I noticed one can
always go up one level (towards the leafe nodes)
through the GUI, but not down or 'back'.
Suggestion:
Add a new button to the toolbar [arrow-pointing-upwards],
which stripps the last level of the current path on both sides
and reads those directories.
Beware of [up] + / as path :-).
Thank you,
Volker Apelt
(Misc)
* Change file builders to use QCString internally.
* Optimize parsing the diff outputs, this big series of if-else is
inefficient, diff2 and diff3 both for files
* Check out if we can make use of the QApplication useGUI parameter instead
of not creating the QApplication at all... does it try to open the display
when set to false?
* Put all the resources text as what's this in the options dialog
* Bug: for certain fonts, the text is not drawn completely without the
fillrect... a line shows up under the text... fix this.
(In the worst case, detect and fill by hand.)
* bug: ^L's do not get rendered correctly?...
* --titlein does not fail when no file is given in stdin.
This is harmless but perhaps it would be nice to check and warn that this
does not make sense to specify.
(Token horizontal diffs)
* Token horizontal diffs computation option (idea from idanan)
* Case-sensitive Horizontal diffs?
(Web site)
* Add emacs trick to start xxdiff automatically on previous file
* Add to google direcotry!!!
* Add directories
* From freshmeat, "run query" link
* Links from Perfore web site
* Add link to apps.kde.com entry (which is pretty much up-to-date).
(Improve options dialog synchronization)
* Sync options dialog
* For options dialog, on synchronize() we should really only update the
controls which haven't been changed. how do we do that? perhaps have it
work on a different resources object?
* Apply display box resets horizontal diffs...
Options dialog has to update on resources changes...
... figure out something with a second copy of the resources object.
(Try using Mightnight Commander backend)
> * If xxdiff calls the vfs layer of midnight commander instead of
> unix filesystem functions directly, it could enter and compare
> even archive contents and ftp servers.
> The libfs-mc.so is a sub project within mc and independent
> of mc.
>
> The required changes to the existing xxdiff code are an
> exchange of the unix calls with their vsf counter parts and
> one initialization/shutdown call at start and program end.
>
> eg: open(..) becomes mc_open(..),
(Internal diffs)
* Enable internal GNU diff as a runtime option
* Implement the 3-way and dir. version of this (not done yet)
* Internal diff: must set status with correct values as external diff
this currently does not work with files being the same
(Port to Qt-3.0)
* Implement reading process output with QProcess
* Port to Windows using the Qt Non-commercial license 3.0, or mingw32
(Misc GUI stuff)
* Add an option to draw a pattern within empty lines, to make them stand out
more (not just a color).
* While selecting the colors, implement a color picker so you could select a
color in the text view
* Add support for wheel events, even in overview area.
* Add an easter egg, pretty much noone ever looks at the source code.
* Allow selection of text, as in an editor, just for cut-n-paste purpose
(line based only though).
* Selecting many lines in a big hunk one-by-one is lame.
Do something at the same time that you implement region selection.
Extended selection (on mouse release normal click except when straddling
lines) allow larger selection (smarter key down/up processing).
Region Selection for the purpose of cut-n-paste.
* Add invert selection functionality
* "What's this?" on a file widget should babble about the specific region
which was clicked on.
* It would be nice to be able to select both sides of a hunk for making
merge comments... but thru which UI do we do this?
* Popup menu should implement selection instead of motion commands, maybe
depending on if clicked on an IGNORE region or not;
* Add more/less contrast buttons for easy changing all colors simulatneously
for horizontal diffs.
(Search results)
* Make each line able to contain multiple search results instances (a list).
* Draw brackets around search results, over text area, highlighting search
results.
* Add case sensitivity to search feature.
* Search using regexp.
* Add a status bar -like widgets line at the bottom, with exclude lineedits
and search widgets, and make it work a la emacs.
(Ignore regexp/pattern)
* Use display-ignore feature to ignore certain regexp
* Use display-ignore feature to ignore change from regexp A to regexp B
(gijsbert)
* Add a line at the bottom for interactive search widget and ignore pattern
widgets (line edits)
(Documentation)
* Rename "regions" to "hunks" and use GNU diff terminology from texinfo
* Open left/right on an empty xxdiff should allow to open!
Supporting one file only. (on startup AND on an open diff) this can be
done easily by specifying the "other" file as an empty file and running
the current diff parser.
* Add an option for splitting all CHANGE regions automatically (buh?)
* Add an option to display context format diffs into its own widget, like
for the line numbers.
* allow insertion of marker lines
* Add save options for save selected only file dialog;
* Keep the cursor line in region after swap->merge transition;
* feature: show only hunks, collapse ignore regions...
* feature: ignore diffs from "this" to "that" (-I option) should we have a
different color for ignored diffs? say e.g. case insensitivity done at the
xxdiff level (for that the ``ignore'' algorithm must be done by xxdiff
itself)
(More checks and verification)
* Check if can parse context, ed, normal, or unified diffs output, the user
might specify such an erroneous command;
--------------------------------------------------------------------------------
Tasks: Merged view improvements.
(Quick save merged results)
> Merged file name parameter
>
>
> I have tried xxdiff with CM/Synergy. Horizontal diffs
> are really neat. Furthermore it would be nice to have a
> default output file parameter (like -o filename) for
> the merge operation and a save button to write output
> to this file.
>
>
> Message
>
>
>
> Date: 2001-11-20 14:03
> Sender: blais
> Logged In: YES
> user_id=10996
>
> Sounds like an easy feature to implement.
>
> I assume that what you want is a default filename so that
> you don't have to type it in when you save. The way it
> could work is that this new save button would not pop the
> file dialog, and would save to some default name, like
> "<filename>.merge" in ClearCase, or the filename
> you
> specified as an option (of course, if the file already
> exists, it would pop a warning). Sounds reasonable. I
> would also add a menu entry for this kind of fast save.
>
> I guess you'd also want an option to save automatically if
> the merge succeeded without conflicts, without even
> showing the UI at all? I wanted to do this eventually
> from a script from the outside, but if you'd know what
> filename to save merged results to, I find it would
> reasonable to support this.
>
> For quick access to that special save as feature I'd add a
> button in the existing toolbar.
>
> Any more ideas let me know. They will certainly be
> considered seriously. I'm in feature mode these days...
>
>
>
>
>
> Date: 2001-11-21 05:04
> Sender: nobody
> Logged In: NO
>
> This is exactly the way CM/Synergy works. You specify a
> template for merge command with placeholders for file
> revision names, inclusive the name of the temporary output
> file. What you need to do is only to say "Save" after
> you
> done and a new revision will be created from that output
> file. With this feature is xxdiff far superior to vendor
> supplied diff tool.
> I have 2 suggestions about usability:
> 1. Mouse wheel for the right scrollbar. You have two
> scrollbars in the application, in the middle of the main
> window and on the right side. In most cases I have the right
> scrollbar enabled and I prefer it over the middle scrollbar,
> because it is common for the most applications. With the
> middle scrollbar I can scroll with the mouse wheel, with the
> right I can only drag. Please make the mouse wheel work for
> the right scroll bar.
> 2. Compact view. Is it possible to introduce a compact view
> mode, where only the differences between files are visible?
> I would go so far to say, this should be the default mode
> and only when you need, you can expand the view to full
> (current) mode. If it already works, and I miss some
> parameter please insert a remark in the FAQ about how to do
> this.
>
>
>
> Date: 2001-11-21 08:21
> Sender: blais
> Logged In: YES
> user_id=10996
>
> 0. Cool. I don't think xxdiff will create a new revision
> automatically though, if I'm not mistaken, the way
> ClearCase's xcleardiff works is by just leaving the saved
> file checked out, then when you check it in, it will
> create the merge arrow/dependency in the database. How
> would it work for CM/Synergy? In other words, do their
> diff program need to do something special apart from just
> saving out the merged results to a file?
>
> 1. Mouse wheel support. I'll do it eventually. The
> scrollbar on the right is all implemented "by hand",
> it is
> part of the overview display and I added this scrollbar
> like behaviour after. This is why it doesn't work right
> now. I think it will be easy to do though.
>
> 2. Doesn't just using the "n" and "p" keys
> work just right
> for that? It just skips to the next/previous change.
> That's what we do at discreet, and most seem happy abuot
> it.
>
> Thanks for keeping the dialog, this in the end will help
> make xxdiff a better product. I plan to eventually add
> some kind of support for most CM systems, but only when
> I'm done with non-CM specific features (e.g. patch input
> and output).
(Misc)
* Rewrite rendering engine for merged view like the text one! can we share
the code?
* Merged view option to draw all hunk texts instead of men-at-work pattern
* Fix all issues raised in merged.cpp FIXME comments.
* Merged view: the motion commands should work from the merged view.
* Selection commands should work too
* Scrolling the merged view should scroll the other view as well.
* Merged view cannot mouse-drag properly. Implement a more viable solution
that will allow to to the inverse drag as well, perhaps setting up a
publicly-available indirection table in the XxDiffs object.
* Merged view: add different colors for different selected sides
* Merged view: display both regions in merged view when unselected
(as an option)
* Add "show merged view on startup" resource.
* Merged view: should have the option of seeing both files' hunks instead of
"work" lines.
(One-Pane View)
* Support one-pane view, where both selections are shown together in one text
view. Do this for merged view only. Perhaps allow selection there.
--------------------------------------------------------------------------------
Tasks: Editing
* Implement some editing in the merged view!!
> Re: [xxdiff/perso] Changing merged output manually?
> From: Xavier Outhier <xavier.outhier@anfdata.cz>
> To: Martin Blais <blais@discreet.com>
> Date: Tue, 22 Jan 2002 09:27:53 +0100
>
> Martin Blais wrote:
> >
> > On Monday 21 January 2002 07:06, you wrote:
> > > Hi,
> > >
> > > I have a question about xxdiff
> > > (http://sourceforge.net/projects/xxdiff/).
> > >
> > > Is it possible to change the merged file
> > > manually. I mean to be able to add text
> > > that is not in any of the 2 or 3 files
> > > compared. This is sometime very useful.
> > >
> > > I haven't see that (clearly) in the online
> > > documentation. I think this will be a very
> > > interesting item for the FAQ.
> > >
> > > I'm using ClearCase at work and from this
> > > point of view clearmerge is really good.
> > > But for me, I would prefer some tool under
> > > GPL.
> >
> > nope, you cannot. the rationale behind this is that I don't
> > want xxdiff to become an editor.
>
> It would be a logical evolution, wouldn't it?
> I mean for the merge window only.
>
> > i'd like to eventually make it able to do very simple
> > editing (and to limit it to that).
> >
> > you can, however, click on the filename widgets to put
> > them in the clipboard and then paste into a shell for
> > editing the file.
>
> Not very friendly way and error prone I suppose.
>
> > let me know the minimal editing capabilities you would
> > like to have and i'll consider it on the todo list.
>
> For me the minimum would be to able to add a complete
> line anywhere in the merged window.
> Maybe this can be only before or after the diff line from
> the sources to be merged.
> A special highlighting should be provided in order to
> make the difference between original code (from the sources)
> and the user added lines.
>
> Possibility to add nay number of line instead of one would
> be better of course.
>
> This excludes adding lines in diff parts if multiple-lines.
> This also excludes adding/changing any section of text
> in existing lines.
>
> Is it reasonnable?
> What's your estimation of difficulty and amount of time
> to make the change?
> What if some contributor do it?
>
> - Again a question: What's the difference between rmp in
> different Linux distribution? I'm running SuSE 7.2. I might
> be interested in preparing rpm for SuSE. Is it worth to do it?
>
>
> Regards,
>
> Xavier.
>
> PS: tu parles francais?
> --
> D2SET Scientific and Technical Non profit Association
> http://www.d2set.org/
> mailto:d2set@d2set.org
>
> Artificial Anthill Project
> http://www.aanthill.org/
> mailto:aanthill@aanthill.org
>
--------------------------------------------------------------------------------
Tasks: Patch support.
(Patch application idea)
Oded Arbel <oded@geek.co.il>
> BTW - in MS-Windows I use this pretty nice diff program called WinMerge,
> and its one cool feature is that I can tell it to copy the selected
> difference from one of the files to the other - actually being a "manual"
> merge tool. it would be really nice if xxdiff had this feature - I like to
> be able to selectibly apply partial differences w/o going to the trouble of
> editing patch files by hand.
(Patch input support)
* Make it able to read in a patch and apply it, without the second file
* Allow diff using a patch file, even containing a patch for many files
(easy: you could let patch patch the file on stdout, grab the output and
perform normal diff)
(Patch output support)
* Make it able to output a patch
--------------------------------------------------------------------------------
Tasks: Directory diffs improvements and bug fixing.
(Directory Diffs Misc)
* Don't show vertical line on directory diffs!
* In dirdiffs mode, cut-n-paste should just put the clicked filename (one
side) in the clipboard, without the \n.
* Launching xxdiff dirs with two same directories results in an empty buffer
thingy, because diff itself just silently returns.
* New functionality that spawns a bunch of diffs for all the changed files
in a directory (dirdiffs only).
* In dir diffs, remove toolbar buttons, selection menus, open file must be
able to select a directory, etc. IOW finish checking that all that is left
works.
* Add exclude option to diff options
> 2. Running "xxdiff dir1/*.c dir2/*.c caused seg. fault.
> "dirdiff", available at freshmeat.net, runs with no problem.
>
> Thanh Ma wrote:
> >
> > Hi,
> >
> > 2. Running "xxdiff dir1/*.c dir2/*.c caused seg. fault.
> > "dirdiff", available at freshmeat.net, runs with no problem.
> >
>
> I found the bug for this one. THis is a simple cmdline parsing bug I had
> never found. Thanks again for reporting it.
>
> In any case, this should not work: your shell expands the list of files, so
> in effect your program get the whole list... how is it supposed to know which
> list is on which side? I guess it looks at the directory prefixes.
>
> I wonder if it handles dirdiff dir1/*.c dir2/*.c dir3/some.c
> In any case, an ignore pattern will be implemented eventually to do the same
> as what you're asking. When I get that done I'll probably extend the cmdline
> interface to do like diff does. GNU diff doesn't handle this cmdline
> interface:
>
>
> taiwan:/DLlocal/.../xxdiff/test$ diff -q -r d1/*.c d2/*.c
> diff: extra operand
> diff: Try `diff --help' for more information.
* Show symlinks, date and size of files in directory diffs
* Add an icon somewhere to show if a directory diff or a simple file diff
* Add a file viewer command for dirdiff to spawn on inserts and deletes in
dirdiff mode! That would be great!
--------------------------------------------------------------------------------
Tasks: CM integration
(CVS revisions browsing)
* Write independent app running in a different process to dnd CVS revisions
* Make the text area a drop site for files, so files from the other guy or
from some file manager could be dropped right into it and be diffed
automatically. This will require some non-trivial temporary file diddling.
(Xxscripts)
* Implement xxcvs update.
* CVS and Clearcase: write interface/protocol scripts
* Mv xxct to xxcleartool and implement using distutils
* Separate cvs stuff from xxcvs into cvslib, use distutils
(General CM support)
* Some features:
| Peter Becker wrote:
| >
| > > Anyway, my question:
| > >
| > > I want to implement some support for CM systems, in particular ClearCase and
| > > CVS. I wish to implement this in a generic manner, in order to support
| > > multiple CM systems.
| > >
| > > I need your input: what CM-related features would you like to see supported in
| > > a file comparison program? Here's what I'm thinking of:
| > >
| > > - revision tree listing i.e. looking at the history
| > > of revisions
| > >
| > > - automatic version extraction i.e. being able
| > > to switch which version of file xxdiff is
| > > diffing with, probably by clicking in the
| > > revision tree listing
| > >
| > > - ability to checkout latest version (prior to saving
| > > a merge result).
| > >
| > > - All CM commands should be run in background in case
| > > of slow access to CM server
| > >
| > > Anything else? Please let me know, I want to know what could be useful to
| > > you. Any comments appreciated.
|
|
|
| > Something we use all the time is cvs edit -- it would be useful for us if a merge
| > tool can handle read-only checkout and edit/unedit.
|
| When I mentioned "checkout" above, in cvs it's called "edit", so we're talking
| about the same thing:
|
| >From cvs documentation:
| > you are planning to edit it, use the `cvs edit' command. Some systems
| > call this a "checkout", but CVS uses that term for obtaining a copy of
| > the sources (*note Getting the source::.), an operation which those
| > systems call a "get" or a "fetch".
|
|
| > Useful for the comparison of different versions of the program is a program that
| > combines directory and file comparison -- the overview shows all files and if they
| > are different, the files that are different can be opened in the file diff.
|
| xxdiff already does that. If you call it on two directories, you can select
| files and use the popup menu to get an xxdiff of the specific files.
|
| xxdiff also works recursively on directories. It makes it really easy to
| compare hierarchies this way (this is how I merge my configuration files, for
| example).
|
| However, you just gave me another idea: one may wish to compare tagged
| versions, as a directory diff, e.g. compare hierarchy with 1.8 tag and 1.9
| tag. I'll look into how I could do this. This would be a cool feature. Do
| you get it? for example, you could spawn a directory diff in your current
| directory, asking xxdiff to compare with the latest tagged versions.
(Annotations)
* Somehow support annotations within xxdiff, with input perhaps from some
script, perhaps integrated from C++.
| >
| > Some nice but really not important feature: connecting the lines of the code with
| > the last changes (and their logs). This is useful if you ask yourself: what is
| > this code for? But maybe this feature shouldn't go into a diff tool.
|
| Surely it could be nice to be able to extract and display the log comments for
| shown revisions, good idea! I'll add it in.
(Binary Diffs)
* Idea (plante@iro): Pour faire des diffs de fichiers binaires...
Sers-toi d'un programme qui fait des hexdumps (sur linux il y a xxd), et
fais le diff la-dessus. Ça marche bien.
|