File: NEWS

package info (click to toggle)
monotone 0.48-3
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 20,096 kB
  • ctags: 8,077
  • sloc: cpp: 81,000; sh: 6,402; perl: 1,241; lisp: 1,045; makefile: 655; python: 566; sql: 112; ansic: 52
file content (3124 lines) | stat: -rw-r--r-- 137,886 bytes parent folder | download
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
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
Sun Jun 13 22:13:53 UTC 2010

        0.48 release.

        Changes

        - Much more information is now passed to the editor when composing a
          commit message for a new revision. The Author, Date, Branch and
          Changelog values may now all be changed directly in the editor
          allowing new branches to be created without using the --branch option.
          Changes to other lines of this information must not be made or the
          commit will abort.

        - The edit_comment lua hook now only takes one argument which is the
          text to be passed to the editor to edit a commit. Existing hooks that
          override the default hook will need to be changed to work properly.

        - The long date/time format used by 'status', 'commit' and 'log' must
          be sufficient to preserve a date through a formatting and parsing
          cycle. The 'status' command now checks for this and warns if the
          format is unsuitable and 'commit' will refuse to operate with an
          unsuitable format.

        - The output of the 'status' and 'log' commands has changed to align
          with the new information displayed by 'commit' so that all three
          commands display revisions similarly.

        - The 'setup' as well as the 'clone' command check if no managed default
          database exists and if no database is given either as command line
          or as workspace option and eventually create a new default database
          outside of the bookkeeping directory of the new workspace (see below
          for more information on the new management features).

        - The output of monotone diff has changed to use /dev/null as the source
          for added files and as the target for deleted files. This is
          compatible with patch(1) and will cause it to add and delete files
          where appropriate. As part of this change diff will now include the
          removed contents of deleted files which were omitted in earlier
          versions of monotone.

        - Monotone will only warn about bad certs if there are not also matching
          trusted certs. So if someone commits a bad branch cert, monotone will
          only warn about that bad cert until someone else approves that
          revision into the same branch (fixes monotone bug #8033).

        - 'db check' now checks for errors in the branch heads cache,
          and 'db regenerate_caches' fixes them.

        - The output of the Lua functions print() and io.write() is now
          redirected to the standard progress message stream of monotone.
          See chapter 6.3 in the documentation for details.

        New features

        - Monotone has now database management capabilities: If you place your
          databases in one or more specific locations (defaults to
          %APPDIR%/monotone/databases on Windows and $HOME/.monotone/databases
          on Linux, configurable by a hook), it is able to discover these
          databases and access them only by giving the (base) name of their
          filename, for example ":my-database.mtn".

          You can also directly create new databases in the first found default
          location by issuing 'mtn db init -d ":my-database.mtn".

          Some commands, like 'setup' and 'clone' automatically fall back to
          a default database (":default.mtn", also configurable by a hook) if
          no database option is explicitely given.

          Additionally, monotone remembers checked out workspaces for every
          managed database and displays these "known" registered paths together
          with other information in the new 'list databases' command
          (closes monotone bug #8916).

        - A set of accompanying management commands - 'register_workspace',
          'unregister_workspace' and 'cleanup_workspace_list' - to handle moved
          or removed workspaces for managed databases have been added.

        - Many commands that change the heads of a branch (approve, disapprove,
          pull, merge, etc) can now take an option "--update". If run from
          a workspace which is based on a head of the branch and has no local
          changes, this option makes these commands update that workspace to
          the new head. If you always want this behavior, you can define the
             get_default_command_options(cmd)
          hook in your monotonerc (fixes monotone bug #17878).

        - New command 'undrop' which undoes a 'drop' done by mistake
          (fixes monotone bug #13604).

        - New automation command 'update' which behaves identical to
          the normal 'update' command.

        - 'ls tags' now outputs the branch name(s) a tagged revision is on.
          The revision id is shortened to the first ten characters to get some
          more space for this (fixes monotone bug #12773).

        - Default include and exclude patterns are now remembered per server.
          This means that you can have for example one server that you sync
          everything to, and one that you only sync some branches to, and you
          don't have to worry about forgetting to give the include pattern and
          accidentally trying to sync everything to the second server.

        - A new Lua extension function change_workspace(directory) has been
          added. This should be most useful for custom commands which need
          to work on multiple workspaces from the same monotone instance.

        - There is also the new server_set_listening(bool) Lua extention
          function available since 0.47, which can be used to let a monotone
          server exit gracefully instead of having to be killed.

        Bugs fixed

        - A regression in 0.47 prevent successful execution of push / pull /
          sync over pipes (Debian bug 574512); this has been fixed.

        - A bug in 0.46 and 0.47 could lead to pulls or possibly commits taking
          approximately forever, if any of the previous branch heads was not a
          "close" relation of the new head. This has been fixed.

        - Several bugs related to restrictions not including the required parent
          directories of included files have been fixed. It is now possible to
          say 'mtn add a/b/c' followed by 'mtn commit a/b/c' and have the commit
          succeed. See the restrictions section in the manual for more details
          (fixes monotone bugs #15994, #17499, #20447 and #22044).

        - monotone no longer saves changed options from the command line back
          to _MTN/options in case the command execution was unsuccessful
          (fixes monotone bug #22928).

        - When monotone reads packets from files, like f.e. keys in a directory
          given by the --keydir option, and these files are large and do
          not contain packet data at all, monotone no longer uses an excessive
          amount of time and memory to figure this out
          (fixes monotone bug #28799).

        - The 'log' command no longer crashes if it is executed in a workspace
          whose parent revision(s) do not exist in the specified database
          (fixes monotone bug #29677).

        - The 'clone' command no longer removes an existing bookkeeping
          directory if the target directory "." points to a workspace
          (fixes monotone bug #29927).

        - The commands in monotone's help output are now sorted alphabetically.

        - monotone on Windows will now have a non-zero exit code when
          interrupted (^C). This was broken in 0.47 when it was fixed to not
          throw an exception on being interrupted.

        - In 0.46 and 0.47, monotone could sometimes get confused
          about which revisions were the heads of a particular branch.
          This would happen when a new branch cert was added to a
          revision that was an ancestor of one or more of the current
          heads of the branch, most commonly during netsync when
          multiple people had performed identical merges. This is
          fixed now. 'db check' will identify the problem; if your
          database currently gives incorrect 'heads' results, or 'mtn
          bug' on 'merge', you can fix it by running 'mtn db
          regenerate_caches'.

        - In 0.46, spurious network disconnects could occur when transferring
          sufficiently large items (files, diffs, revisions). This was fixed
          in 0.47 but not noted in the release notes at that time
          (fixes monotone bug #28991).

        Other

        - Support for the diffuse merger (http://diffuse.sourceforge.net)
          has been added.

Sun Mar 14 21:15:06 UTC 2010

        0.47 release.

        Changes

        - The default '<unknown>' author used by the git_export command has
          changed to 'Unknown <unknown>' and must be changed in existing author
          map files. The old '<unknown>' author will be rejected by the new
          validate_git_author lua hook.

        - The 'git_export' command now validates all git author and committer
          values using a new 'validate_git_author' lua hook before they are
          written to the output stream. The export will fail if any value is
          rejected by this hook.

        - The 'git_export' command now calls a new 'unmapped_git_author' lua
          hook for all git author values not found in the author map file. The
          default implementation of this hook attempts to produce valid git
          authors using several default pattern replacements.

        - The 'get_date_format_spec' lua hook now has an additional parameter
          which hints at the wanted format (f.e. a short date or a long date
          time). The default implementation now returns '%x' for short and
          long dates, '%X' for short and long times (currently unused) and
          '%x %X' for short and long date times.

        - The options '--date-format' and '--no-format-dates' are no longer
          specific to the 'log' command, but can now be used globally.

        - monotone now prompts only three times for a key password.

        New features

        - Added portuguese translation (thanks to Américo Monteiro)

        Bugs fixed

        - 'passphrase' now allows an empty new password to be given
          (fixes monotone bug #28809)

        - 'automate remote' and 'automate remote_stdio' no longer
          require an existing database (fixes monotone bug #28885)

        - monotone no longer throws an exception on Windows if it is
          interrupted (^C); a couple of other bug have been fixed for this
          platform as well which generally improve the compatibility.

        - The annotation of 'annotate' is now localized.

        - The various occurrences where a revision is described by its
          certs now come with proper localized date output.

        - Fix problems with newer Lua versions especially when
          LUA_COMPAT_VARARG not set.

        Other

        - Roster handling has been sped up significantly, and roster cache
          performance has been fixed for the case of overly large rosters.
          This should be mostly noticable when digging through history
          (especially initial pulls, since those send so many revisions),
          and be more noticable for projects with larger trees.

          The most significant internal change from this is that rosters and
          marking_maps are now copy-on-write. A longer overview of the internal
          changes is at:
          http://lists.gnu.org/archive/html/monotone-devel/2010-02/msg00043.html

        - Improve the compatibility with newer Botan versions.

Sun Jan 17 21:40:35 UTC 2010

        0.46 release.

        Changes

        - "automate stdio" (and "automate remote_stdio", see below)
          use separate streams to encode out-of-band information like
          informational messages, warnings or tickers. A special
          "header" section has been added to the standard output to
          identify future stdio version changes. The error codes used
          in the output of both stdio and remote_stdio, have also
          slightly changed: errors which are the result of a wrong
          call (unknown command, invalid options, parsing errors, ...)
          are returned with code 1, while errors which happened while
          the actual command executed are returned with code 2. Error
          codes are no longer echoed with every packet, but only as
          the payload of the final 'l' ("last") packet.

          Please consult the manual section "mtn automate stdio" for a
          detailed description of the new format.

        - The 'heads' command should be significantly faster now (not
          that it was particularly slow before). This probably isn't
          terribly noticable unless you're in the habit of using "h:*"
          (heads of all branches) as a selector, it's primarily meant
          to enable future changes that will depend on fast 'heads'.

          The database schema has been changed, so you will need to
          run 'mtn db migrate' (preferably after making a backup copy
          of your db).

        - the 'status' command now includes the current (to be committed)
          revision number and will indicate when the branch option in
          _MTN/options has been changed and does not match one of the
          revision's parent branches.

        - Cert labels in the output of the 'log' command are now
          localized.

        New features

        - There's a new command "automate remote_stdio" that makes it
          possible to execute automate commands on a remote server
          (for example, to permit a single database to be used both
          for serving netsync connections and for running a viewmtn
          instance). This requires that the server be running monotone
          0.46 or later. Access control on the server uses a new lua
          hook "get_remote_automate_permitted(identity, command_line,
          options)".

        - There's also a new command "automate remote" that's very much
          the same, but executes only a single command and does not
          stdio-encode the output.

        - A new 'bisect' command has been added to allow searching for a
          specific revision within a range of revisions. This can be useful for
          locating the exact revision that broke something or removed a
          particular feature.

        - Three new commands - 'push', 'pull' and 'sync' - have been added
          to the automation interface. They work just as their non-automate
          counterparts.

        - The global option '--timestamps' has been added which prefixes
          the current local timestamp before diagnostic messages such as
          warnings, progress messages, errors and tickers.  For example,
          this option can be used to log the date and time when clients
          connect to a monotone server.

        Bugs fixed

        - A regression from 0.45's key migration prevented the proper
          output of the `committer` field in 'git_export'.

        - 'db info --full' no longer crashes when executed on a database
          with only one revision.

        - The mtn_automate Lua function which can be used for custom
          commands now properly handles binary data.

        - `db info` now returns a correct byte count for certs again.

        - If a public key was read in via the `read` or
          `automate read_packets`, an invariant was triggered if the
          key was already existing in the database. This has been fixed.

        - `annotate` no longer crashes if the annotated file is empty.

        Other

        - Added the script of the Lua-based contributed Monotone
          extension command "mtn remote_export" to contrib/command/
          with which a remote revision can be exported locally without
          having to fetch all of the history before.


Fri Sep 11 20:50:00 UTC 2009

        0.45 release.

        Changes

        - Certs now link to the key that signed them by the key's
          hash, instead of its name.  This should provide some
          security and usability improvements.

          The database schema has been changed, so you will need to
          run 'mtn db migrate' (preferably after making a backup copy
          of your db).

          The netsync protocol version has also changed. However, we
          found space to implement full protocol version negotiation,
          so no flag day is needed.  If your particular project has a
          situation where there are multiple keys with the same name,
          you will receive errors when trying to sync certs signed by
          those keys to older netsync peers.

          A number of commands have slightly different output now,
          particularly 'ls certs', 'ls tags', 'automate keys',
          'automate tags' and 'automate certs'.  There is a new Lua
          hook associated with these changes,
          'get_local_key_name(identity)', and all Lua hooks that used
          to take a key name as an argument now instead take a table
          with several fields.

          Commands which previously accepted a key name now also
          accept the key's hash or local name, which is a local alias
          for equally named keys.  'read-permissions' and
          'write-permissions' accept either the key name or the hash.

          There is also a new 'db fix_certs' command which fixes wrong
          key assignments in migrated databases if you have the correct
          key available.

        - The 'resolved_user' conflict resolution is no longer
          reported by 'automate show_conflicts' for file content
          conflicts; 'resolved_user_left' is used instead.

        - 'format_version' was removed from 'automate tags' and
          'automate get_attributes' which both do not need this
          additional versioning information.

        New features

        - The 'log' command now, by default, converts all dates it
          prints to your timezone instead of leaving them in UTC, and
          uses a somewhat more friendly format for the dates.

          You can customize the date format with the new
          "get_date_format_spec" Lua hook, which returns a strftime(3)
          format string.  You can also override the format for one
          command with the new --date-format option, disable date
          conversion for one command with --no-format-dates, or
          disable it by default by having the above Lua hook return an
          empty string.

        - The 'diff' and 'automate content_diff' commands take a
          '--reverse' option when one revision is specified, to
          control the order of the diff with the workspace.

        - The 'update', 'checkout', 'pluck', and 'pivot_root' commands
          take an option '--move-conflicting-paths', to handle
          unversioned files that are blocking the action. The
          unversioned files are moved to
          _MTN/resolutions/<workspace_path>, so the action can
          succeed, and the user can recover the files if necessary.

        - Resolution of orphaned file conflicts is now supported by
          'merge --resolve-conflicts' and the 'conflicts' commands.

        - Duplicate name conflicts now support the 'keep' resolution.

        - Monotone now accepts ':memory:' as argument to the --db option
          and sets up a memory-only SQLite database.

        - 'clone' allows cloning into the current directory when
          '.' is given as argument.

        Bugs fixed

        - Monotone now sanely skips paths with invalid characters
          it encounters during 'add' or 'automate inventory'.

        - Key names, cert names, and var domains with non-ASCII
          characters should work properly now.  Previously, they would
          be (usually) converted to punycode on input, and not decoded
          on output. They will now not be converted to punycode at
          all.

        - The 'conflict' commands can now handle duplicate name
          conflicts for directories.

        - 'cvs_import' now properly parses CVS timestamps (again).

        - Windows' cmd.exe is recognized as smart terminal and thus
          monotone should create more readable output in
          netsync operations.


Tue May 12 20:44:00 UTC 2009

        0.44 release.

        Changes

        - Private keys no longer have a separate hash from the associated
          public key. This changes the hashes output by 'ls keys', and also
          changes the format of 'automate keys' and 'automate genkey'.

        New features

        - New 'w:' selector type for selecting the revision the workspace
          is based on.

        Bugs fixed

        - C++ exceptions in Lua extension functions are now converted into
          Lua errors catchable with pcall, instead of causing a crash.

        - In 0.43 revert became excessively noisy and would report changes to
          all attributes on included files and directories regardless of whether
          the attributes had been changed or not. This has been silenced.
          Monotone will now specifically report changes to execute permissions
          only when they occur.

        - In 0.43 monotone would lose execute permissions on all files modified
          during an update operation. Execute permissions are now reset on
          updated files that have the mtn:execute attribute set to true.

        - Invalid revision selectors now cause an immediate error instead of
          being dropped from the selection.  The old behavior could produce
          undesired effects from typoed commands, such as spewing a list of
          all revisions in the database.

        - If "automate stdio" is in use, invalid selectors are reported via
          the automate protocol rather than on stderr.

        - "Best-effort" character set conversions now work again; 'mtn log'
          will not crash just because there is a change log entry with a
          character not representable in your locale.  However, if your system
          iconv(3) implementation does not support the //TRANSLIT extension,
          you may see garbage characters in the above scenario.

        Internal

        - Various small code changes to make monotone compile under (Open)
          Solaris using Sun Studio, and under Windows with Visual C++.

        - monotone.spec has been removed from the distribution.


Sun Mar 22 22:26:00 UTC 2009

        0.43 release.

        Changes

        - The Monotone source distribution no longer includes copies of
          several third-party libraries.  This means they must be downloaded
          and built separately, before building monotone.  See INSTALL for a
          complete list of necessary libraries.

          This allows monotone's developers to concentrate on monotone
          itself, rather than tracking external library updates, which in
          practice did not happen.  By way of illustration, we were still
          shipping sqlite 3.4.1, which is years out of date.  This has also
          been a long-standing request of various redistributors of binary
          packages, who prefer the use of globally shared libraries.

        - There is a new db var "database delta-direction", which can have
          values "reverse" (default), "forward", and "both". This controls
          what kind of deltas are stored for new file versions. Forward
          deltas are very fast for netsync, but slow for most other uses.
          Set this to "both" (or perhaps "forward" if you're very short on
          disk space) on an empty db and pull everything into it, to get a
          database which will be much faster for server usage (especially
          initial pulls).

        - 'mtn help <command_or_group>' or 'mtn <command_or_group> --help' no
          longer print global options, thus making the output of specific help
          requests more compact. You still see all available global options
          by executing 'mtn help' without any arguments.

        - 'mtn automate get_current_revision' now returns an empty changeset
          instead of an error if a workspace contains no changes.

        New features

        - A monotone database may be exported in the git fast-import format
          using the git_export command. The output from this command may be
          piped into git fast-import or other tools supporting this format.

        - Additional 'u:' and 'm:' selector types for selecting the revision the
          workspace was last updated from and revisions matching specified
          message globs in changelog and comment certs.

        - Additional '--revision' option for 'mtn log' allows logging of
          selected sets of revisions.

        - Additional '--full' option for 'mtn db info' to display some
          statistic analysis of the date certs in the database.

        - Command line options in the EDITOR and/or VISUAL environment
          variables are honored; for instance, EDITOR="emacs -nw"
          works now.  (Debian bug #320565.)

        - The `mtn_automate' lua function now correctly parses and sets
          options for executed automate commands.

        - The 'commit' command accepts a non-empty _MTN/log as the log
          message when '--message-file=_MTN/log' is given.

        Bugs fixed

        - Performance of the log command has been improved significantly.
          Previous versions of monotone loaded individual certs by name for each
          printed revision and this caused sqlite to not use the correct
          index. Now, all certs are loaded for each printed revision once and
          individual certs are selected from the full list which allows sqlite
          to use the preferred index.

        - In 0.42, a netsync writer would attempt to queue up all outgoing
          data as soon as it knew what data to send, in a single operation,
          without servicing the event loop. If there was a large amount of
          data to send, this would cause very long pauses and sometimes
          timeouts and dropped connections (for pauses over 10 minutes).
          The bug that caused this is fixed, and that operation now has a
          safety timer that should prevent it from coming back.

        - When the netsync server receives garbage over the network, it
          should be much better about only terminating the offending connection
          instead of the entire server.

        - The log command was missing '--depth' and '--exclude' options used to
          restrict revisions printed to those touching specific paths. Log now
          allows these options and uses them properly.

        - The update command previously did not clear execute permissions from
          files that had their associated 'mtn:execute' attribute cleared.

        - Several minor problems with workspace attributes have been fixed.
          Earlier versions of monotone would reset attributes such as
          mtn:execute on all files when any workspace modifying command was
          executed. Applying attribute changes to workspace files is now done
          much more selectively in the same manner that content and name changes
          are applied.

        - In certain cases, especially also on FreeBSD and Mac OS X, netsync
          called select() even after read() returned 0 bytes to indicate the
          end of the file, resulting in a confusing error message. This
          is fixed by treating EOF specially and prevent further calls
          to select() on the file handle, as recommended by the
          select_tut man page.

        - If given a filename, `mtn ssh_agent_export' now creates that
          file with the correct permissions (i.e. mode 600), creates
          directories as necessary, and does not throw an internal
          error if creation or writing fails.  (You're still on your
          own for directory creation and permissions if you take the
          key on standard output and redirect it to a file.)

        - The `p:' selector now accepts single character revision ids.

        - `mtn merge_into_workspace' no longer crashes if one tries to merge
          in an ancestor or descendant of a workspace, but gives a helpful
          error message.

        - Several bugfixes to `mtn automate stdio':

          * It now correctly distinguishs between syntax and command errors by
            returning error code 1 for the former and error code 2 for the
            latter - just as advertised in the documentation.

          * The stdio event loop no longer quits if a syntax error occurs, but
            rather discards the wrong state and accepts new (valid) commands.

          * Option errors haven't been catched properly and thus weren't encoded
            in stdio either; this has been fixed as well.

          * Global options, which were set or changed by a previously executed
            command, weren't properly reset before the next command was issued.
            It was f.e. not possible to "unignore" suspended branches for
            the `branches' command when `--ignore-suspend-certs' was given in
            a previous run. Now only those global options persist between
            executed commands which were given to stdio directly.

        Internal

        - Using 64 bit integer values to represent dates internally. This
          has no user visible effect.

        - The unit test code has been separated from the main source, thus
          building the tests no longer requires a full recompilation. Also,
          the number of modules which are linked into unit tester has
          decreased tremendously.

        - A couple of debug commands have been added to the `database'
          command group to aid performance timing. See `mtn help --hidden db'
          for a list of available commands.

        - Our internal error handling has been overhauled. N() is gone, and E()
          takes three arguments instead of 2: E(bool, origin::type, i18n_format).
          origin::type is an enum describing the source of the error, eg network,
          user, internal. Data types can publically inherit origin_aware (as the
          vocab types do) to obtain a public origin::type member named
          'made_from'; this can then be supplied to E() when sanity-checking
          that data. origin_aware and origin::type are in origin_type.hh.
          I() will throw a unrecoverable_failure, and E() will throw either a
          unrecoverable_failure or a recoverable_failure depending on the
          origin::type provided. informative_failure is gone.


Fri Dec 26 22:08:00 UTC 2008

        0.42 release.

        Changes

        - The output of 'automate show_conflicts' has been changed; a
          default resolution for file content conflicts and user resolutions
          for other conflict types has been added. 'directory_loop_created'
          changed to 'directory_loop'.

        - The French, Brazilian-Portuguese and Japanese translations were
          outdated and thus have been removed from the distribution. In case
          you care about them and want them back, drop us a note at
          monotone-devel@nongnu.org.

        Bugs fixed

        - 'mtn db kill_rev_locally' did not update the inodeprint
          cache when executed from a workspace on which the
          revision's changes where applied.

        - Some recent performance issues have been corrected:
          * since 0.40, there is much more use of hex encoding/decoding.
            These functions have been sped up considerably.
          * since 0.40, every command in an 'automate stdio' session
            would reinitialize the database. This was rather slow, so
            monotone will now keep the database open between commands.

        - The Lua-based contributed Monotone extension introduced in
          0.38 haven't been added to the tarball; this has been fixed.

        - Monotone died if _MTN/options contained an empty / not-existing
          'keydir' entry. This has been fixed. Also, invalid options are now
          better detected and give a more useful error message.

        - Monotone crashed if it was called with more than 2048 command
          line arguments. This has been fixed.

        - If vim is used as merger, it no longer prompts the user for an
          enter key press.

        - Decoding errors f.e. through to garbage from the network no longer
          results in informative failures, but in warning. This was made
          possible by introducing the concept of origin-aware sanity checks.

        - Monotone crashed if it was called with nested wildcards such as
          'a.{i.{x,y},j}'. This has been fixed.

        - The standard implementation of the 'ignore_file' hook now accepts
          windows and unix line endings in .mtn-ignore files.

        New features

        - New 'mtn ls duplicates' command which lets you list
          duplicated files in a given revision or the workspace.

        - New option --no-workspace, to make monotone ignore any
          workspace it might have been run in.

        - New command group 'mtn conflicts *'; provides asynchronous
          conflict resolutions for merge and propagate.

        - New 'automate file_merge' command which runs the internal line
          merger on two files from two revisions and outputs the result.

        - New 'automate lua' command with which lua functions, like
          monotone hooks, can be called over automate. This is particularily
          useful to get user defaults, like ignorable files, branch keys and
          passwords, which are managed through one or more monotonerc files.

        - New 'automate read_packets' command which reads data packets like
          public keys similar to 'mtn read'.

        - 'merge' and 'propagate' accept user commit messages; the
          'merge rev rev' or 'propagate branch branch' message will be
          prefixed to the user message. --no-prefix removes the prefix.

        Internal

        - Update Botan to 1.7.12.


Wed Sep  3 21:13:18 UTC 2008

        0.41 release.

        Changes

        - 'mtn clone' now takes a branch argument rather than a branch
          option which is more what people expect given the fact that
          mtn push/pull/sync do not use a branch option either.

        - 'mtn automate inventory' will show the birth revision for
          any file that has been committed.

        Bugs fixed

        - If the options '--db' or '--keydir' were previously
          specified for a command which was executed inside a
          workspace and one or both option arguments were invalid
          (f.e. invalid paths), they were still written to
          _MTN/options of the particular workspace.  This lead to
          errors on any subsequent command which used these
          options. This bug is fixed in so far that basic file type
          checks are applied on both options, so its no longer
          possible to set non-existing paths accidentally or use a
          path to a directory as option argument for '--db'.

        - If a key clash occurs on a netsync operation, i.e. two
          different keys with the same key id are encountered, mtn now
          fails cleanly and provides further guidance how to proceed.

        - It was previously not possible to clone a branch / database
          anonymously; this has been fixed.

        - If the client tries to use an unknown key, try to fall back
          to anonymous pull instead of failing immediately.

        - 'mtn automate identify' was broken in 0.40 when used over
          stdio, i.e. the output of the command did not get into the
          right output channel; this has been fixed.

        - Monotone would produce a warning if executed from the root
          directory of a Windows drive; this has been fixed.

        - The 'note_commit' hook now returns the new revision id
          hex-encoded again - the bug was introduced in 0.40.

        New features

        - New 'mtn suspend' command which lets you mark certain
          revisions and thus whole branches as discontinued
          ("suspended") by attaching a special suspend cert to the
          revision. All relevant mtn commands (f.e. mtn heads,
          mtn ls branches) honor this cert by default. To ignore it,
          simply add '--ignore-suspend-certs' to your command line.
          Suspended revisions can have children, which are in no
          way affected by the cert of their parent, i.e. suspended
          development lines or branches can simply be "unsuspended"
          by committing to them.
          This feature was already added in monotone 0.37, but was
          forgotten to be mentioned in NEWS back then.

        - New 'get_default_command_options' lua hook which lets you
          specify default options for a given, triggered command.
          Useful f.e. if you always want to have your 'mtn add'
          command executed with '-R' / '--recursive'.

        - Add 'automate show_conflicts' command.

        - Add 'automate get_workspace_root' command.

        - Add Lua hooks 'note_netsync_revision_sent',
          'note_netsync_cert_sent' and 'note_netsync_pubkey_sent'.


Fri Apr 11 22:50:44 UTC 2008

        0.40 release.

        Changes

        - The vim merger has been improved and now uses diff3 to merge
          non-conflict changes automatically before executing vimdiff.

        - Values used with the --depth option used to control recursion with
          node and path restrictions have changed. Using --depth=0 now means
          exactly the specified directories and *not* their children. Using
          --depth=1 now means the specified directories and their immediate
          children. Previously --depth=0 included children and --depth=1
          included grandchildren and it was not possible to exclude children
          using --depth.  The simple fix for anyone using --depth is to add 1 to
          the values they are using.

        - Document that ssh: and file: sync transports are not supported on
          native Win32.

        Bugs fixed

        - `commit' now uses keydir specified in _MTN/options

        - duplicate name conflicts now show a proper error message, even if
          a parent directory got renamed as well. In that case, the error
          message now shows both names for the directory and the offending
          file name.

        New features

        - The bare parent selector 'p:' can now be used in a workspace to
          query the parent(s) of the workspace' base revision. This is
          equivalent to "mtn au select p:`mtn au get_base_workspace_revision`".

        - push, pull, and sync can be run with a single argument, which looks
          like
             mtn://hostname?include_pattern/-exclude_pattern
          or
             mtn://hostname?include=include_pattern/exclude=exclude_pattern

        Internal

        - Update Botan to 1.7.4.

        - Usage of the internal app_state object has been reduced, objects
          are better encapsulated now. The database interface has been
          enhanced to ease reduction of locking contention in the future.

        - Merged the two indexes on revision_certs into a single one.

        - The database schema has been changed so that it now stores
          binary SHA1 hashes rather than their hexadecimal encoding,
          in most places where these are used.  This reduces the
          database size and speeds up operations a little.

          Users who like to fiddle with the database directly are
          advised to use the sqlite functions hex() and quote() to
          print columns that store hashes (including IDs), and the
          hexadecimal literal notation x'DEADBEEF' to input them.

        - Binary SHA1 hashes are also used for most in-memory
          processing, avoiding conversions and saving memory.

Mon Feb 25 15:55:36 UTC 2008

        0.39 release.

        Changes

        - 'mtn di' is now an alias for 'mtn diff'.

        - 'automate db_set' has been renamed to 'automate set_db_variable'.

        - 'automate db_get' has been replaced by 'automate get_db_variables'
          which returns all database variables similar to 'list vars' in
          basic_io format, optionally restricted by domain.

        - The REVID argument of 'automate get_revision' is now mandatory;
          to retrieve the current workspace revision, use the new command
          'automate get_current_revision'

        - messages describing conflicts from all of the various merge commands
          have been reworked and should be much more informative.

        - mtn show_conflicts now outputs much more detailed and descriptive
          messages, however it may report content conflicts that will be
          resolved automatically by the line merger.

        - The internal copy of PCRE has been updated to version 7.6.
          If you use the '--with-system-pcre' configure switch, it
          will insist on at least this version.

        - "emacs" has been removed from the list of dumb terminal types;
          tickers should now default to --ticker=count with emacs terminals

        - extensive section on merge conflicts and ways to resolve them
          added to the manual.

        Bugs fixed

        - for changes near the beginning of a file, mtn's unified diff
          output sometimes contained too many leading context lines.

        - the path handling of 'mtn revert' was improved and fixed two bugs:
          now a restricted revert on a node "dir1/file1" reverts only the
          content changes in "file1", but leaves renames of any of its
          ancestor nodes untouched; furthermore, if "dir0/" was renamed to
          "dir1" and "dir1/file1" was dropped, mtn now re-creates file1 at the
          proper place ("dir1/") and leaves no missing files around because
          of the non-existing "dir0/".

        - a few changes needed to build with gcc 4.3.

        New features

        - 'automate drop_db_variables' which drops one database variable
          (like the 'unset' command) or all variables within a given domain.

        - 'automate inventory' now accepts the options '--no-ignored',
          '--no-unknown', '--no-unchanged' and '--no-corresponding-renames'.
          Please consult the monotone documentation for more information about
          these new options.
          In addition, 'automate inventory' no longer recurses into ignored
          directories. The typical case of listing files that need attention
          now runs at least four times faster.

        - 'automate get_current_revision' which outputs the revision text of
           changes in the current workspace

Wed Dec 12 21:21:15 UTC 2007

        0.38 release.

        Changes

        - mtn log now prints a single dot for a project's root
          directory instead of an empty string.

        - mtn now warns if changes to a file will be ignored because
          the file has been deleted on one side of a merge.

        - mtn now errors if your chosen private key doesn't match the public
          key of the same name in your database.

        - mtn now checks for your key before a merge action takes place to
          ensure that any manually merged file isn't lost in an error case

        Bugs fixed

        - a bug introduced in 0.37 prevented an external merger from being
          executed unless the MTN_MERGE environment variable was set

        - mtn read successfully reads revision data, and cert packets again

        - mtn consistently supports certs with empty values
          (fixed 'ls certs' and 'read')

        Internal

        - Update Botan to 1.7.2.

        - Moved the gzip implementation out of the Botan directory.

        Other

        - Added the scripts of the following Lua-based contributed
          Monotone extension commands to contrib/command/:
          "mtn base", "mtn fuse", "mtn revision", "mtn conflicts".

        - Added a hooks version of the contributed ciabot script,
          contrib/ciabot_monotone_hookversion.lua

        - The monotone manual is now licensed under the GPL rather than
          the GFDL.

Fri Oct 25 22:35:33 UTC 2007

        0.37 release.

        Changes

        - mtn db kill_rev_locally now checks for an existing workspace
          before the revision is killed and tries to apply the changes
          of this particular revision back to the workspace to allow
          easy re-committing afterwards

        - the "--brief" switch for mtn annotate has been renamed to
          "--revs-only" for clarity

        - mtn help now lists the commands (and their aliases) available
          within a group, so its easier to get an overview which commands
          are available at all

        - the "MTN_MERGE=diffutils" merger (provided by std_hooks.lua)
          was improved. It now accepts a MTN_MERGE_DIFFUTILS environment
          variable which can be used to control its behaviour
          through comma-separated "key[=value]" entries. Currently
          supported entries are "partial" for doing a partial
          batch/non-modal 3-way merge conflict "resolution" which uses
          embedded content conflict markers and "diff3opts=[...]" and
          "sdiffopts=[...]" for passing arbitrary options to the used
          "diff3" and "sdiff" tools. When used in combination with "mtn
          merge_into_workspace" this way one especially can achieve a
          CVS/SVN style non-modal workspace-based merging.

        - There is a new revision selector: "p:REV" selects the
          parent(s) of revision REV.  For example, if a revision has
          one parent,

             mtn diff -r p:REV -r REV

          will show the changes made in that revision.

        - Monotone now uses the Perl-Compatible Regular Expression
          (PCRE) library for all regular expressions, instead of the
          boost::regex library.  This means that external Boost
          libraries are no longer required to build or use Monotone.
          If building from source, you will still need the Boost headers
          available somewhere.  See INSTALL for details.

          PCRE's syntax for regular expressions is a superset of
          boost::regex's syntax; it is unlikely that any existing
          .mtn-ignore files or other user uses of regexps will break.
          The manual now contains detailed documentation of the regexp
          syntax, borrowed from PCRE itself.

        - the format of "mtn automate inventory" has changed to basic_io.
          This fixes a couple of corner cases where the old format
          returned wrong information and introduces new capabilities like
          restricted output, recognized attribute changes, and more.
          For a complete overview on the new format, please take a look
          in the appropriate manual section.

        Bugs fixed

        - mtn automate heads called without a branch argument now properly
          returns the head revisions of the workspace's branch if called
          over mtn automate stdio

        - mtn commit no longer crashes if it creates a revision whose
          roster already exists, i.e. was left behind by the command
          `mtn db kill_rev_locally REV` (savannah #18990)

        Documentation changes

        - the documentation of the "--revs-only" (formerly "--brief")
          switch for the annotate command didn't match its actual
          behavior, this has been fixed

        - documentation for the "ssh_agent_add" command was missing
          and has been added

        Other

        - contrib/usher.cc has been removed. Please use the
          net.venge.monotone.contrib.usher branch instead.

        Internal

        - Update SQLite to 3.4.1.

        - Update Lua to 5.1.2 plus latest bug fixes.

        - Update Botan to 1.5.10.

        - Internal use of regular expressions has been almost eliminated.
          (Regular expressions are still used for .mtn-ignore and the
          --show-encloser feature of mtn diff, and are still available to
          Lua hooks.)



Fri Aug  3 06:08:36 UTC 2007

        0.36 release.

        Changes

        - The help command is now able to show documentation on subcommands
          (such as 'attr set').

        - The help command now shows a brief abstract of each command,
          instead of only listing their names.

        - The command `list changed` now outputs the new path of any
          renamed item making it easier to copy and paste these paths
          for external program usage.

        - `automate attributes` has been renamed to `automate get_attributes`,
          also a bug has been fixed there so resurrected attributes are now
          properly outputted as "new" and not "changed".

        New features

        - Two new commands to set and drop attributes over automate:
          `automate set_attribute` and `automate drop_attribute`

        - There is a new function available to the lua hooks,
          'server_request_sync(what, address, include, exclude)', which will
          initate a netsync connection to the server at "address", with the
          given include and exclude patterns, and will sync, push, or pull,
          as given in the "what" argument. If called from a monotone instance
          which is not acting as a server, this function will do nothing.

        - There is a new hook available,
          'get_netsync_key(server, include, exclude)', which is called to
          determine which key to use for netsync operations. Note that the
          server calls this once at startup with the address it is listening
          on, "*", and "" as arguments, rather than for each connection.

        Other

        - Giving the --confdir argument will automatically set the key store
          directory to keys/ under that directory, unless --keydir is also
          given. This is a bugfix.

        - Fixed a regression in 0.35 that resulted in some databases
          becoming significantly larger when storing new revisions. Existing
          databases with this problem can be fixed by pulling into a fresh
          database using 0.36.

        - contrib/lua-mode.el, a Lua mode for GNU emacs.

        - contrib/monotone-buildbot-notification.lua, a netsync hook to have a
          server notify a buildbot when new changes have arrived.  Useful for
          anyone who uses a buildbot with monotone as source.

        - contrib/monotone-cluster-push.lua, a netsync hook script to have
          arriving changes be forwarded to other servers automatically.  It
          uses the new internal lua function 'server_request_sync'.

        - contrib/mtn_makepermissions, a simple script to create
          read-permissions and write-permissions from files in the directories
          read-permissions.d and write-permissions.d, Debian style.

        - contrib/Monotone.pm, a first attempt to write a Perl module to
          interface with 'monotone automate stdio'.

        - contrib/monotone-import.pl has been removed since monotone now has
          an internal import command.

        Internal

        - Commands are now defined as a tree of commands instead of a
          plain list, which allows the help system to look up information
          of a command at an level in the tree.

        - The command class, the automate class and all the associated
          macros have been cleaned up.

        - All C++ files now depend on base.hh, which includes the few things
          that are used virtually everywhere.  'make distcheck' will check for
          the presence of base.hh in all source files and will protest if
          it's not there.  This is explained further in HACKING.

        - Update the internal SQLite to version 3.4.0.

        - Updated Visual C building system, which now also builds the test
          programs.  The script visualc/runtests.bat can be used to run the
          tests.

        - Monotone can now be built successfully with Boost 1.34. Older
          versions of monotone would sometimes seem to work depending on
          the compiler used, but would have bugs in path normalization.

        - Monotone now requires Boost 1.33 or later.

        - The Boost filesystem library is no longer required.

        - The Boost unit test system is no longer required.



Mon May  7 14:08:44 UTC 2007

        0.35 release.

        Changes

        - 'mkdir --no-respect-ignore PATH' now really skips any
          ignore directives from .mtn-ignore or Lua hooks

        - Private keys are now stored more safely, using file
          permissions.

        - The editable log summary (what you get in an editor when
          committing without -m) now includes information about which
          branch the commit applies to.

        - The status command and the editable log summary now show
          the same details about the change.

        New features

        - 'automate identify', an automate version of 'mtn identify'.

        - 'automate roots', prints the roots of the revision graph,
          i.e. all revisions that have no parents.

        Other

        - You can't drop the workspace root any more.

        Internal

        - Update the internal Lua to version 5.1.2.

        - Added build files for Mac OS X.

        - Update the internal SQLite to version 3.3.17.

        - Code cleanup of app_state.



Sun Apr  1 08:23:34 UTC 2007

        0.34 release.

        The internal data format has changed with this release;
        migration is straight-forward.  To upgrade your databases,
        you must run:
               $ mtn -d mydb.mtn db migrate
        All of these operations are completely lossless, and 0.34
        remains compatible with earlier versions all the way back
        to 0.26 with regards to netsync.

        Changes

        - Text is now output at best of the environment's possibilities,
          transliterating them or substituting '?' as needed.

        - The lua hook get_author() now takes a second argument, a
          key identity, in case someone wants to create an author based
          on that and not only the branch name.

        - The command 'chkeypass' became 'passphrase'.

        - The commands 'drop', 'rename' and 'pivot_root' default to
          always perform the operation in the file system as well.
          They do not accept '--execute' any more, but will instead
          take '--bookkeep-only' in case the user only wants to affect
          bookkeeping files.

        New features

        - New hook note_mtn_startup(), which is called when monotone is
          started.

        - New Lua support function spawn_pipe(), which is used to run
          a command and get back its standard input and standard output
          file handles as well as the pid.

        - Monotone will automatically add a monotone key in a resident
          ssh-agent when it's first used, and will then use ssh-agent
          for all subsequent signing.  Thus, you will only need to give
          the password once in one session.
        - New command 'ssh_agent_export' to export a monotone key into
          an SSH key.
        - New command 'ssh_agent_add' to add a monotone key explicitly
          to a resident ssh-agent.

        - New command 'clone' that combines 'pull' and 'checkout'.

        - 'automate put_file' and 'automate put_revision' stores a file
          and a revision in the database.

        - 'automate cert', an automate version of 'mtn cert'.
        - 'automate db_set', an automate version of 'mtn set'.
        - 'automate db_get', an automate version of 'mtn ls vars' with
          a twist.

        Other

        - contrib/ciabot_monotone_hookversion.py now uses a real
          basic_io parser and thus should send more precise
          information to the cia server. Furthermore, it has become
          more careful with creating zombies.

        - contrib/monotone-log-of-pulled-revs-hook.lua, a lua hook
          to display information about incoming revisions.

        - contrib/monotone-mirror-postaction-push.sh, a post action
          script that should be executed by contrib/monotone-mirror.sh
          to automatically push data on to other servers.

        - contrib/monotone-mirror.lua, a lua hook that executes
          contrib/monotone-mirror.sh after any netsync session is done.

        - contrib/monotone-mirror.sh now takes keydir and keyid
          configuration and has better protection against overlapping
          duplicate runs.

        - contrib/monotone.bash_completion now handles signals.

        - contrib/monotone.el now includes a commit button.

        Internal

        - Date and time display has now been reimplemented internally
          to avoid Boost more.  This means that we have lowered our
          dependency from Boost 1.33.0 to 1.32.0.

        - Lots of code cleanup.

        - The heights cache got an index, making the processing faster.

        - Update the internal SQLite to version 3.3.13.

        - Algorithm to find uncommon ancestors has been rewritten, so
          'pull' and 'regenerate_caches' should be faster.


Wed Feb 28 22:02:43 UTC 2007

        0.33 release.

        The internal data format has changed with this release;
        migration is straight-forward.  To upgrade your databases,
        you must run:
               $ mtn -d mydb.mtn db migrate
        All of these operations are completely lossless, and 0.33
        remains compatible with earlier versions with regards to
        netsync.

        Changes

        - "mtn ls unknown" no longer recurses into unknown directories.

        - update will fail rather than clobbering unversioned files
          that exist in the workspace.

        - update will detect directories with unversioned files before
          attempting to drop them and will refuse to run rather than
          corrupting the workspace. such unversioned files must be
          removed manually.

        - the character set and line separator conversion hooks
          (get_system_linesep, get_charset_conv and get_linesep_conv)
          have been removed. Similar functionality (probably based on
          file type attributes) is planned and will be added in a future
          release.

        - update will switch to the branch of a given revision if it
          differs from the current workspace branch.

        - add will now accept combinations of --unknown, --recursive and
          --no-respect-ignore.

        - import now imports unknown directory trees properly.

        - use SQLite 3.3.12.

        - schema migrator rebuilt and will now properly detect and report
          if the database used is created by a newer monotone than the one
          currently used.

        - removed the man page mtn.1, as it hadn't been updated for a long
          time.

        New features

        - "mtn merge_into_workspace" (still to be documented).  This command
          will allow you to review and fix up a merge in your workspace
          before committing it to the repository.  However, the conflict
          resolution interface remains the same as that of the 'merge'
          command for now (i.e. monotone will invoke your specified merge
          tool on all files with conflicts and you must resolve them as they
          are presented).  Work on in-workspace conflict presentation and
          resolution is planned for the future.

        - "mtn log" will now print an ASCII revision graph alongside the
          usual log text.

        Speed improvements

        - "mtn annotate file" should run even faster now. it exploits
          the fact that we store deltas of rosters. by peeking at
          these deltas, it can avoid reconstruction of whole rosters
          in many cases.

        Other

        - contrib/monotone-mirror.sh and
          contrib/monotone-mirror-postaction-update.sh, two scripts
          to mirror and update directories automatically.

        - contrib/monotone-run-script-post-netsync.lua, to automatically
          update a directory as soon as new revisions or certs arrive for
          a given branch.

        - contrib/monotone.bash_completion had some improvemens.

        - contrib/monotone.el had some improvements.

        Internal

        - Internally, the concept of "projects" has been introduced.  It
          currently doesn't mean anything, but will be used later, with
          policy branches and similar.



Wed Dec 27 09:57:48 UTC 2006

        0.32 release.

        Changes

        - "mtn serve" no longer takes patterns on the command line.
          Use the permissions hooks instead.

        - the name of the option that denoted the revision from which
          "mtn log" should start logging was renamed from "--revision"
          to "--from"

        - author selectors no longer have implicit wildcarding

        - if you manually add entries to MTN/log while you are
          working, in preparation for an eventual commit, you will now
          be required to remove a "magic" template line from the file
          before the commit will succeed. This, like the test for an
          empty log file, helps to prevent accidents.

        - the "db regenerate_caches" migration command replaces the
          previous "db regenerate_rosters", generalising the task of
          rebuilding or generating cached data that may be added
          across an upgrade.  Like "db migrate", which upgrades the
          database schema, this command fills in the data for new
          features. In this release, as well as rosters, it also adds
          "heights" information used to speed up topology operations.

        Speed improvements

        - "mtn annotate file" and "mtn log file" are generally much
          faster now, dependant on the number of revisions that
          changed the file. Both commands as well as "mtn automate
          toposort" make use of data called "heights" caching the
          topological order of all revisions.  In order to create and
          use this data, the following must be run once for each db
          after upgrading:

               $ mtn -d mydb.mtn db regenerate_caches

        New features

        - "mtn automate content_diff"

        - "mtn automate get_file_of" (same as get_file, but expects
          a file path and optionally a revision)

        - "mtn import" command

        - "mtn log --to"

        - netsync_note_* hooks are given much more information,
          inlcuding a http/smtp/etc style status code

        - includedirpattern(dir, fileglob) function for hooks


        Bugs fixed

        - bug in "automate stdio" that would result in monotone
          garbling its input in some circumstances fixed

        - "mtn annotate file" and "mtn log file" are generally much
          faster now, dependant on the number of revisions that
          changed the file. Both commands as well as "mtn automate
          toposort" make use of data called "heights" caching the
          topological order of all revisions.

        - spawn_redirected hook function now understands a blank
          filename to mean not to redirect that stream

        - "mtn log" is now in proper topological order, also due to
          the use of cached "heights" data

        - reset options between "automate stdio" commands

        - another compile fix for gcc3

        - bug in localization code where option strings where not
          always properly translated


        Other

        - botan library upgraded to 1.6.0

        - accommodate changes in boost 1.34

        - documentation for "mtn automate get_option"

        - notes/ directory



Sat Nov 11 11:06:44 PST 2006

        0.31 release.  Code cleanups and bug fixes.

        New features:

        - If multiple --message (or -m) arguments are passed to
          'commit', then they will be concatenated on separate lines.

        - The validate_commit_message hook is now told what branch the
          commit is on.

        Bugs fixed:

        - The typo that prevented building with gcc 3.3 has been
          fixed.

        - Attempting to commit without a signing key available now
          fails earlier.

        - Command-line option parsing has been redone yet again; this
          should fix a number of bugs caused by the use of
          boost::program_options.  For instance, command line error
          messages are now l10nized again, "--depth=asdf" now gives a
          sensible error message instead of crashing, and --key= now
          works as an alternative to -k "".

        - A bug in the new roster caching logic that caused assertion
          failures on very large trees has been fixed.

        - A rare bug in the "epoch refinement" phase of the netsync
          protocol has been fixed.

        - Accidental (and undocumented) change to 'automate inventory'
          output format reverted; documentation is now correct again.

        - Some obscure error conditions with 'pivot_root' fixed.

        Many fixes to 'automate stdio':

        - IO handling has been rewritten, to remove some
          obscure bugs and clean up the code.

        - automate commands can now take options (even when used with
          'automate stdio').

        - The default block size has been increased to 32k (which
          should considerably reduce overhead).

        - Many automate commands were flushing their output far too
          often, causing major slowdowns when used with 'automate
          stdio'; this has been fixed.

        - Syntax errors now cause 'automate stdio' to exit, rather
          than attempting to provide usage information for the calling
          program to read.

        Other:

        - New large-coverage random testsuite for delta reconstruction
          path finding algorithm.

        - Miscellaneous code cleanups and improved error messages.

        - Enhancements to debian packaging.

        - New translation to es (Spanish).

Sun Sep 17 12:27:08 PDT 2006

        0.30 release.  Speed improvements, bug fixes, and improved
        infrastructure.

        Several internal data formats have changed with this release;
        migration is straight-forward, but slightly more complicated
        than usual:
          -- The formats used to store some cached data in the
             database have changed.  To upgrade your databases, you
             must run:
               $ mtn -d mydb.mtn db migrate
               $ mtn -d mydb.mtn db regenerate_rosters
          -- The metadata stored in _MTN in each workspace has been
             rearranged slightly.  To upgrade your workspaces, you
             must run
               $ mtn migrate_workspace
             in each workspace.
        All of these operations are completely lossless, and 0.30
        remains compatible with earlier versions with regards to
        netsync.

        Speed improvements:

        - Algorithm used to find branch heads rewritten, to use vastly
          less memory and cpu.  This not only makes 'mtn heads'
          faster, but also 'mtn commit', 'mtn update', and other
          commands, which were spending most of their time in this
          code.

        - The format used in the database to store the roster cache
          was rewritten.  This makes initial pull approximately twice
          as fast, and somewhat improves the speed of restricted log,
          annotate, and so on.

        - The xdelta algorithm was further optimized.

        - A memory leak in Botan was fixed, which was causing
          excessive memory and CPU time to be spent during 'mtn
          checkout'.

        - Monotone has fast-paths for doing character set conversion
          when the system it is running on uses plain ASCII.  These
          fast-paths now know that "646" is another name used for
          ASCII, and systems that use this name (like some BSDs) now
          benefit from the fast-paths.

        - Miscellaneous other improvements.

        Workspace format changes:

        - It is now possible to write down a multi-parent (merge)
          workspace.  However, monotone will still refuse to work with
          such a workspace, and there is no way to create one.  This
          change merely sets up infrastructure for further changes.

        - _MTN/revision no longer contains only the parent revision
          id; if you depended on this in scripts, use 'mtn automate
          get_base_revision_id' instead.  Also, _MTN/work has been
          removed.

        UI changes:

        - 'mtn status' now includes the branch name and parent
          revision id in its output.

        - The output of 'mtn annotate' and 'mtn annotate --brief' has
          been switched.  The more human-readable output is now the
          default.

        - 'mtn pluck' now gives an error message if the requested
          operation would have no effect.

        - On command line syntax errors, usage information is now
          printed to stderr instead of stdout.  (Output requested with
          --help still goes to stdout.)  This should make it easier to
          find bugs in scripts.

        Bug fixes:

        - While changelog messages have always been defined to UTF-8,
          we were not properly converting messages from the user's
          locale.  This has now been fixed.

        - An off-by-one error that caused some operations to abort
          with an error message about "cancel_size <
          pending_writes_size" has been fixed.

        - In 0.29, --help output was not localized.  This has been
          fixed.

        - In 0.29, setting merger = "emacs" would not work unless
          EDITOR was also set to "emacs" (and similar for vi).  This
          has been fixed.

        - A rare invariant violation seen when performing certain
          sequences of renames/adds in the workspace has been fixed.

        - If a user failed to resolve the conflicts in a text file, we
          would continue asking them to resolve conflicts in remaining
          files, even though the merge could not succeed.  We now exit
          immediately on failure.

        - Work around some g++ 3.3 brokenness.

        Documentation changes:

        - Imported *-merge documents into the manual (they still need
          to be cleaned up to fit in better).

        Changes to automate:

        - Bug fix in 'attributes': this command is supposed to list
          attributes that were removed from a file in the current
          revision; instead, it was listing all attributes that had
          ever been removed from that file.  Now fixed.

        - New command 'get_corresponding_path': given a revision A, a
          path P, and a revision B, looks up the file with name P in
          revision A, and states what path it had in revision B.

        - New command 'get_content_changed': given a revision A and a
          path P, gives the ancestor of A in which P was last
          modified.

        - New command 'get_option': Fetches variables from
          _MTN/options (e.g., the current workspace's branch and
          database).

        - New command 'genkey': an automate-friendly way to generate a
          new monotone key.

Sun Aug 20 15:58:08 PDT 2006

        0.29 release.  Code cleanups and bug fixes.

        New features:

        - The output of 'mtn status' has been changed significantly; the
          output formerly used by 'mtn status --brief' has become the
          default.  For output similar to the old 'mtn status', see
          'mtn automate get_revision'.

        - It is now significantly easier to control what merger
          monotone uses to resolve conflicts; for instance, to use
          emacs to resolve conflicts, add:
             merger = "emacs"
          to your .monotonerc file.  To override temporarily, you can
          also use the environment variable MTN_MERGE, which takes the
          same strings.  Currently recognized strings are "kdiff3",
          "xxdiff", "opendiff", "tortoisemerge", "emacs", "vim", and
          "meld".

        - Formerly, monotone's sync-over-ssh support required that an
          absolute path be used, with a URL like:
            ssh://venge.net/home/njs/my-db.mtn
          The following syntaxes are now supported as well:
            ssh://venge.net/~/my-db.mtn
            ssh://venge.net/~njs/my-db.mtn

        Bugs fixed:

        - The bug where monotone would sometimes respond to a control-C
          (or several other signals) by locking up and refusing to exit,
          has been fixed.

        - Monotone now properly respects SIGPIPE.  In particular, this
          means that 'mtn log | less' should now exit promptly when
          'less' is exited.

        - 'mtn log' now flushes its output after each message; this
          makes 'mtn log <FILES>' significantly more usable.

        - 'mtn log <FILES>' formerly listed irrelevant revisions (in
          particular, any revision which contained a delete of any files
          or directories, was always included).  This has been fixed.

        - If, during an update, two files both had conflicts, which,
          when resolved, resulting the two files becoming identical, the
          update would error out.  This has been fixed.

        - If _MTN/log exists and does not end in a newline, we now add a
          newline before using the log message.  This removes a problem
          where the string "MTN:" would end up appended to the last line
          of the log message.

        - We no longer buffer up an arbitrarily large number of pending
          writes in the database.  This improves speed and memory usage
          for 'commit', and fixes the problem where 'cvs_import' would
          run out of memory.

        - Monotone's tree walking code (used by 'ls unknown', 'ls
          missing', and friends) now uses much less memory, especially
          on reiserfs.

        Automate changes:

        - 'mtn automate stdio' now uses a configurable block size,
          controlled by command-line option --automate-stdio-size.  This
          is mostly useful for testing speed/memory trade-offs.

        - 'automate attributes' has a new format, which includes more
          information.

        Code cleanup:

        - We now use boost::program_options to parse command line
          options, rather than popt.  The only user-visible change
          should be that --option="" no longer works as a way to set
          some option to the empty string; use --option "".  (This
          change also removes a lot of orphaned and historically buggy
          code from monotone.)

        Other:

        - zsh completion script significantly revised and updated (see
          contrib/monotone.zsh_completion).

Sat Jul 22 01:39:51 PDT 2006

        0.28 release. Cherrypicking, a new testsuite, and some fixes
        and enhancements.

        New features:

        - Cherrypicking with the new "pluck" command. This takes (a restricted
          subset of) the changes in a revision, or between two
          revisions, and applies them to your workspace.  That this
          has happened is not recorded in history; it as if you
          happened to make some very similar changes by hand in your
          workspace.
        - New automate commands, "automate tags" and "automate branches".
        - "diff" now knows how to find enclosing function (or
          whatever) bodies, just like GNU diff's "-p" option.
          -- The regex that defines "enclosing function" can be chosen
             on a per-file basis by a hook function; the default hook
             knows about LaTeX, Texinfo, and most programming
             languages.
          -- This is enabled by default; use --no-show-encloser to
             disable.

        Enhancements:

        - When netsync fails due to permission errors, the server returns a
          semi-intelligible message before dropping the connection.
        - When merging a branch with 3 or more heads, the order in which to
          merge the heads will now automatically be chosen to minimize
          the amount of repeated work that must be done.
        - Crash dumps are now written to $CONFDIR/dump when no workspace is
          available
        - Path validation routines are faster.
        - Inodeprints should be slightly more robust now.
        - New hook get_mtn_command, used to determine the path to the
          mtn binary on a remote host, when using ssh support.
        - "diff" now accepts "-u" and "-c" as short for "--unified"
          (the default) and "--context", respectively.

        Bug fixes:

        - "revert --missing" now works when run in a subdirectory.
        - "revert --missing" now works without any additional files
          being specified.  (You don't have to say "mtn revert
          --missing .".)
        - Fix an edge case where monotone would crash if there was a
          content conflict in a merge for which there was no lca.
        - Fix a case where netsync would sometimes hang during refinement.
        - "mtn help" and "mtn --help" now exit with return code 0.

        Build environment:

        - automake 1.9 is now required.
        - The testsuite has been rewritten, and should be much faster now. It
          also no longer relies on the presence of a *nix userland.
        - Add workaround for gcc 4.1.[01] bug causing "multiple
          definition" errors.

        Internal:

        - Restrictions have been split into path_restrictions and
          node_restrictions, and generally cleaned up more.

Sat Jun 17 14:43:12 PDT 2006

        0.27 release.  Minor bug fixes and enhancements, plus ssh
        support.

        Major new features:

        - Monotone can now push/pull/synchronize over arbitrary
          bidirectional streams, not just raw TCP.
          - File-to-file synchronization is enabled out of the box,
            e.g.:
              $ mtn -d db1.mtn sync file:/path/to/db2.mtn
          - SSH synchronization is enabled out of the box, e.g.:
              $ mtn -d local.mtn sync ssh://njs@venge.net/home/njs/remote.mtn
            Note that this requires mtn be installed on the remote
            computer, and locks the remote database while running; it
            is not ideal for groups accessing a shared database.
          - New protocols can be defined with Lua hooks -- for
            example, someone could in principle make "$ mtn sync
            xmpp://njs@jabber.org" do something interesting.
          - See section "Other Transports" under "Advanced Uses" in the
            for more details.

        Minor new features:

        - Selectors now support escaping, e.g., b:foo\/bar can be used
          to refer to a branch with name "foo/bar" (normally / is a
          metacharacter that separates multiple selectors).
        - Visual C++ can now build monotone on Windows.  (Mostly
          important because it allows better Windows debugging.)
        - --quiet now turns tickers off, and does not turn warnings
          off.  New option --reallyquiet disables warnings as well.
        - New command 'automate common_ancestors'.
        - 'ls branches' now takes a pattern, e.g.:
            $ mtn ls branches "*contrib*"

        Speed improvements:

        - Bug in select() loop fixed, server should no longer pause in
          processing other clients while busy with one, but multiplex
          fairly.
        - The database has a new write buffer which gives significant
          speed improvements in initial pulls by cancelling redundant
          database writes.
        - There's been a fair bit of performance tuning all around.

        Bug fixes:

        - Merge tools that exit in failure are now detected.
        - Better reporting of operating system errors on Win32.
        - Passphrases stored in ~/.monotonerc are no longer written to
          the log file.  (Passphrases entered at the terminal were
          never written to the log file.)
        - Fix sql injection bugs in selectors, making it safe to
          expose slectors in web interfaces etc.
        - Files marked with the mtn:execute attr now respect umask.
        - 'automate' commands on Win32 now disable newline translation
          on their output; this is especially important for 'automate
          stdio'.
        - 'db check' now calls the sqlite "PRAGMA integrity_check", to
          validate the integrity of things like sqlite indices.
        - 'mtn annotate nonexistent-file' now gives a proper error
          message, instead of an assertion error.
        - 'mtn revert --missing' now works correctly when run in a
          subdirectory.
        - 'automate inventory' no longer fails when _MTN/work contains
          patch stanzas.

        Other:

        - Many, many internal code cleanups
          - Including changes to somewhat reduce the size of the
            binary
        - New tutorial on using packets added to the manual
        - Updated translations, improved error messages, etc.

        Reliability considerations:

        - In the two months since 0.26 was released, zero serious bugs
          have been reported in the new code.

Sat Apr  8 19:33:35 PDT 2006

        0.26 release.  Major enhancements and internal rewrites.
        Please read these notes carefully, as significant changes are
        described.  In particular, you _cannot_ upgrade to 0.26
        without some attention to the migration, especially if you are
        working on a project with other people.  See UPGRADE for
        details of this procedure.

        The changes are large enough that there were 3 pre-releases of
        this code; the changes that occurred in each can be seen
        below.  However, for the convenience of those following
        releases, all changes since 0.25 will be summarized in these
        release notes.  There is no need to read the pre-release notes
        individually.

        Major changes since 0.25:

        - The most user-visible change is that the default name of the
          monotone binary has changed to 'mtn'.  So, for example, you
          would now run 'mtn checkout', 'mtn diff', 'mtn commit',
          etc., instead of 'monotone checkout', 'monotone diff',
          'monotone commit'.
          - Similarly, the name of the workspace bookkeeping directory
            has changed from "MT" to "_MTN".  As workspaces will
            generally be recreated when migrating to this release,
            this should not cause any problems.
          - Similarly, built-in attrs like 'execute' have had 'mtn:'
            prepended to their names.  For example, executable files
            should now have the attr 'mtn:execute' set to 'true' on
            them.  The migration code will automatically add this
            prefix; no user intervention is needed.
          - Similarly, the name of the ignore file has changed from
            '.mt-ignore' to '.mtn-ignore'.  The migration code will
            automatically rename this file; no user intervention is
            needed.
          - Similarly, the recommended suffix for monotone db files is
            now '.mtn'.
          These changes are all purely cosmetic, and have no affect on
          functionality.

        - The most developer-visible change is that the data
          structure for representing trees has been completely
          replaced, and all related code rewritten.  The new data
          structure is called a 'roster'.  You don't really need to
          know this name; unless you are hacking on monotone or using
          various debug operations, you will never see a roster.
          It's mostly useful to know that when someone says something
          about 'roster-enabled monotone' or the like, they're
          referring to this body of new code.

          This change has a number of consequences:
          - The textual format for revisions and manifests changed.
            There is no conceptual change, they still contain the same
            information and work the same way.  The formats were
            merely cleaned up to correct various problems experience
            showed us, and allow various enhancements now and in the
            future.  However, this change means that a flag-day
            migration is required.  See UPGRADE for details.
          - Directories are now first-class objects.  You can add an
            empty directory, must drop a directory if you want it to
            go away, etc.
          - Attrs are now first-class objects.  '.mt-attrs' no longer
            exists; attrs are now described directly in the manifest,
            and changes to them appear directly in revisions.  The
            migration code will automatically convert existing
            .mt-attrs files to the new first-class attrs.  If you have
            custom attrs, those may require special handling -- if
            this is the case, then the upgrader will tell you.
          - The merge code has been rewritten completely.  The
            interface is currently the same (though this rewrite makes
            it easier to improve the interface going forward); if you
            have found merging in monotone to be easy in the past,
            then you will not notice anything different.  If you have
            run into problems, then the new merger should make your
            life substantially simpler.  It has full support for
            renames (of both directories and files), intelligent
            merging of attrs, improved handling of file content
            merges.  Is the first known merger implementation based on
            a provably correct algorithm (the "multi-*-merge"
            algorithm), has exhaustive automated tests, and generally
            should give accurate, conservative merges.
          - The new code is generally faster, though not yet as
            fast as it could be.

        Netsync changes:

        - The default netsync port has changed 5253 to 4691.  4691 is
          our official IANA-assigned port.  Please adjust firewalls
          appropriately.

        - Netsync code has also been largely reworked; new code should
          provide better opportunities for optimizations going
          forward.

        - The protocol is incompatible with earlier versions of
          monotone.  This should not be a surprise, since the data it
          carries is also incompatible (see above)...

        New features:

        - New option --brief to 'annotate', gives somewhat more
          friendly output.

        - Several enhancements to log:
          - New option --next, to display descendent revisions
            (rather than ancestor revisions).
          - When 'log -r' is given an ambiguous selector, it now just
            logs all matching revisions, instead of requiring the
            selector be disambiguated.
          - New option --no-files.

        - New command 'show_conflicts', performs a dry run merge.

        - New command 'ls changed'.

        - 'rename' (and its alias 'mv') now accept a broader range of
          syntax:
            mtn rename foo some_dir
              -> renames foo to some_dir/foo
            mtn rename foo bar baz some_dir
              -> moves foo, bar, and baz to some_dir/foo,
              some_dir/bar, and some_dir/baz

        - New hook 'validate_commit_message', which may be used to
          verify that all commit messages meet arbitrary user-defined
          rules.

        - New option --log, to log monotone's output to a file.

        - New option 'drop --recursive', to remove a directory and its
          contents in one swoop.

        - The root dir may now be renamed.  This is a somewhat exotic
          feature, but has some interesting uses related to splitting
          up or joining together projects; see new commands
          'pivot_root', 'merge_into_dir'.

        Minor bug fixes:

        - 'serve' with no --bind argument should now work on systems
          where the C library has IPv6 support, but the kernel does
          not.

        - Stricter checking on the internal version of filenames to
          ensure that they are valid UTF-8.

        - If the database is in the workspace, then it is always
          ignored.

        - Monotone no longer errors out when using a French (fr)
          locale with a non-Unicode codeset.

        Other changes:

        - Packet commands ('rdata', 'fdata', etc.) have been moved to
          'automate'.

        - Database storage now uses sqlite's blob support; database
          files should be ~1/4 smaller as a result.

        - Monotone now uses sqlite 3.3; this means that older versions
          of the command line client (e.g., an 'sqlite3' command built
          against sqlite version 3.2) cannot be used to poke at a
          monotone 0.26 database.  Solution is to upgrade your sqlite3
          program.  Hopefully this is irrelevant to most users...

        - Translations updated, and 3 new translations added (de, it,
          sv).

        Reliability considerations:

        - This new codebase has received much less testing under real
          world conditions than the codebase used in 0.25, simply
          because it is newer.  It has been in active use for monotone
          development since 8 January 2006, and only a small number of
          bugs have been found; all bugs found so far have been very
          minor, and none stood any danger of corrupting data.
          Furthermore, we are much more confident in the theoretical
          underpinnings of the new approach than the old, and the test
          suite attempts to exhaustively exercise all new code paths.

          However, none of this is or can be a substitute for real
          world experience.  We advise caution in upgrading to this
          version of monotone, and suggest that (especially) those who
          upgrade aggressively should pay extra attention to the
          monotone mailing list before and after doing so.

Wed Mar 29 05:20:10 PST 2006

        0.26pre3 release.  This release may be considered a "release
        candidate", in that while we need to write some tests and make
        sure some bugs are fixed, all features are in and we hope that
        no further bug fixes will be needed either.  It is still a
        pre-release for testing.  Do not package it.  DO NOT USE THIS
        RELEASE UNLESS YOU WANT TO BE A DAREDEVIL.

        But, PLEASE PLEASE TEST this release.  There are some
        non-trivial changes since 0.26pre2, and this is your last
        chance!

        Major changes since 0.26pre2:

        - The name of the monotone binary has changed to 'mtn'.
          - Similarly, the name of the bookkeeping directory in
            workspaces has changed from 'MT' to '_MTN' (if you have an
            existing 0.26-line workspace, just rename the MT directory
            to _MTN).
          - Similarly, the name of the ignore file has changed from
            ".mt-ignore" to ".mtn-ignore".  'rosterify' will rename
            these automatically (if you have already rosterified, you
            get to rename them by hand).
          - Similarly, the recommended suffix for monotone db files is
            now ".mtn".

        - We now perform stricter checking to make sure that filenames
          are valid UTF-8.  It is in principle possible that this
          stricter checking will cause histories that used to work to
          break; if you have non-ascii filenames, it is strongly
          recommended to test with this release.

        - Root dir renaming is now supported.  See new commands
          'pivot_root', 'merge_into_dir'.
          - As a side-effect, it is now possible to run 'rosterify' on
            histories in which two independent lines of history were
            merged.

        - The security fix released in 0.25.2 has been forward-ported
          to this release; this prevents some security exposure to
          people running monotone as a client on case-insensitive file
          systems.

        Minor change since 0.26pre2:

        - Database now uses sqlite blobs for storage; should be ~1/4
          smaller.
        - New command: show_conflicts, does a dry-run merge.
        - New option 'drop --recursive', to remove a directory and all
          its contents in one swoop.
        - Changes to 'log':
          - New option --no-files
          - Including merges is again the default (i.e., it now acts
            like 0.25, and not like 0.26pre2).
          - When 'log -r' is given an ambiguous selector, it now just
            logs all matching revisions, instead of requiring the
            selector be disambiguated.
        - New option --log, to log monotone output to a file.
        - Netsync changes:
          - Was sending far too much data in some cases; now does not.
          - Several bugs that caused it to lock up fixed
          - Tweak to allow 'usher' proxy to transparently redirect
            based on client's protocol version, to ease migration
            between incompatible protocol versions.
        - Packet commands have been moved to 'automate'.
        - Fixed bugs in 'db kill_rev_locally', should no longer leave
          an inconsistent db behind.
        - Translation updates

        Other projects receiving notable work:

        - Monotone's "dumb server" support (repo distribution over
          HTTP/FTP/SFTP etc.) has been ported to 0.26, a first command
          line version written, etc.
        - The 'usher' netsync proxy used for hosting many databases on
          a single machine has received significant cleanups, and the
          'webhost' project to provide a simple interface to shared
          monotone hosting providers has received even more work.

Sat Feb 11 13:32:51 PST 2006

        0.26pre2 release.  Inching towards 0.26.  If you are using
        0.25 or earlier, then make sure to read the very important
        notes for 0.26pre1, below.  In particular, like 0.26pre1, this
        is a pre-release for testing.  Do not package it.  DO NOT USE
        THIS RELEASE UNLESS YOU WANT TO BE A DAREDEVIL.

        (Though, in fact, in a month of usage, only one bug has been
        found in the new history code, and it was both minor and
        harmless.  It has additionally been fixed.)

        Database changes:

        - SQLite 3.3.3 has been imported.  3.3 introduces a new database
          format that is not backwards compatible with earlier 3.x releases.
          New databases will be created using this new format.  Existing
          databases remain compatible, and are not converted automatically.
          Existing databases can be converted by performing a database
          vacuum ('monotone db execute vacuum').

        New features:

        - New hook validate_commit_message -- use to verify that all
          commit messages meet arbitrary user-defined rules.

        UI improvements:

        - rename (and mv) commands now accept a broader range of
          syntax:
            monotone rename foo some_dir
              -> renames foo to some_dir/foo
            monotone rename foo bar baz some_dir
              -> moves foo, bar, and baz to some_dir/foo,
                 some_dir/bar, and some_dir/baz
        - Print a warning if it looks like a user has made a quoting
          mistake on push/pull/sync/serve (windows cmd.exe has
          confusing rules here).
        - New command "ls changed".
        - New option "--next" to log, which displays descendents of
          the start revision.
        - Updating to an arbitrary revision now works again (as it did
          in 0.25 and earlier).  This allows one to, for instance,
          switch a working copy to another head, or back up to an
          earlier version, while preserving uncommitted changes.
        - New option --brief to annotate, gives somewhat more friendly
          output.
        - Fixed bug that made ticker output from netsync inaccurate.
        - In 'log', --no-merges is now the default, use --merges to
          override.
        - If the database is in the working copy, then it is always
          ignored.

        Bugs:

        - 'serve' with no --bind should now work on systems where the
          C library has IPv6 support, but the kernel does not.
        - Compile fixes for GCC 4.1 pre-releases.

        Other:
        - Better detection when users have not run "rosterify", and
          more helpful suggestions on what to do in this case.
        - Documentation, translation, error message,
          etc. improvements.
        - Updates to contrib/mtbrowse.sh, simple shell-based monotone
          interface.
        - Updates to many other contrib/ files, mostly to maintain
          compatibility with monotone changes.

Sun Jan  8 01:08:56 PST 2006

        0.26pre1 release.  Massive rewrites, released for shakedown.
        This release is also dedicated to Shweta Narayan.

        This release includes massive changes compared to 0.25.  The
        core versioning code has all been replaced with a completely
        different mechanism.  Data formats and the netsync protocol
        have changed in incompatible ways.

        Migration to 0.26pre1 or later is irreversible and requires a
        flag day for your project.  See UPGRADE for details.  Note
        that we DO NOT recommend upgrading at this time; see below.

        If you have been following the development list for the last
        few months, you may have heard about "rosters" -- this is the
        name for the new core data structure we use.  While the code
        is completely different, the user experience should not be
        very different.  You will never see a roster, unless you are
        debugging monotone itself; everything still revolves around
        revisions, manifests, and certs.

        While this new code has extensive tests, because of these
        incompatibilities, it has never been used for real work.  The
        purpose of this release is to make a version available for the
        monotone developers to begin using for day-to-day work, to
        shake out bugs.

        Let's say that again in caps: THIS CODE IS PROBABLY BUGGY, DO
        NOT USE IT IN PRODUCTION UNLESS YOU WANT TO BE A DAREDEVIL.

        However, testing of this version with real databases is a good
        idea, and we'd very much appreciate hearing about your
        experiences.

        Some of the many changes:
        - New textual format for revisions and manifests; they remain
          conceptually the same, but have been tweaked. Manifests
          now use the same "basic_io" format as everything else in
          monotone, and contain entries for directories, revisions
          record file adds slightly differently and record directory
          adds for the first time, etc.  Because of this format
          change, revision hashes are now different; converting
          rosters requires a full history rebuild and reissue of certs.
        - Directories are now first class.  To get rid of a directory
          you must remove it; to create a directory, you must add it.
          You can add an empty directory.
        - Attrs are now first class.  The .mt-attrs file is gone;
          attributes are now stored directly in the manifest.
        - New merge algorithm, based on "multi-*-merge", and more
          aggressive, less buggy merge ancestor selection code
        - Netsync's core has been largely rewritten.  Code is now much
          clearer and more reliable, and now includes the ability to
          resume interrupted partial transfers. The netsync protocol
          version number has been bumped, and netsync now runs on the
          IANA-assigned port 4691 by default.
        - 100% fewer change_set.cc related bugs.  100% more roster.cc
          related bugs.  But the idea of touching roster.cc does not
          terrify people.

Thu Dec 29 23:10:03 PST 2005

        0.25 release.

        Incompatible command line changes:
        - 'monotone revert' now requires an argument.  To revert your
          entire working copy,
            $ monotone revert
          no longer works; instead, go to the root of your working
          copy and run
            $ monotone revert .

        New features:
        - Netsync now supports IPv6 (where OS support exists)

        Bugs fixed:
        - 'revert' gives feedback describing what it changes
        - Database locking further tweaked, to allow more concurrent
          access in situations where this is safe.
        - On win32, ticker display was fixed, so that it no longer
          prints a new line at each update.
        - 'read' can now understand (and migrate) privkey packets
          generated by monotone version 0.23 or earlier.
        - 'log --diffs <files>' now prints only diffs for the given
          files (previously, it would print only revisions in which
          the given files changed, but would print all diffs for those
          revisions).
        - Win9x and WinNT 4 compatibility fixes.

        New translations:
        - pt_BR

Sat Nov 27 22:29:38 PST 2005

        0.24 release.

        Configuration change (Windows only):
        - Configuration directory on Windows has changed.  It used to
          be some complicated and varying function of %HOME%,
          %USERPROFILE%, %HOMEDRIVE%\%HOMEPATH%, whether you were
          running in mingw/cygwin, etc.  It is now, always,
          %APPDATA%\monotone.  For instance, if your configuration
          file used to be named
           ...\Documents and Settings\user\.monotone\monotonerc
          it will now be named
           ...\Documents and Settings\user\Application Data\monotone\monotonerc
          Please rename files appropriately.

        Major key management changes:
        - Private keys are no longer stored in your database.  They
          are stored in ~/.monotone/keys/ (Unix, OS X) or
          %APPDATA%\monotone\keys\ (Windows).  'db migrate' will
          automatically move your keys out of your database and into
          their proper location.  Consequences:
          - 'genkey' no longer requires a database.  Simply run it
            once when you first start using monotone, even before you
            have created a database.
          - Running 'genkey' once will suffice to give all databases
            on one computer access to your key.  No more fiddling with
            'read'.
          - When you want to make your key available on another
            computer, simply copy over the appropriate file from your
            'keys' directory to the corresponding directory on the new
            computer.
        - Private keys also use a more standard on-disk envelope
          encoding ("PBE-PKCS5v20(SHA-1,TripleDES/CBC)") instead of
          previous ARC4.  More secure, and with extra crypto karma.

        Netsync changes:
        - Command line syntax for 'serve' changed; administrators WILL
          have to adjust scripts.
            monotone serve my.host.com "*"
          becomes
            monotone serve --bind=my.host.com "*"
          or simply
            monotone serve "*"
          (to serve on the default port, on all interfaces).
        - Speaking of which, we can now bind to all interfaces; run
          'serve' without passing --bind, or with passing
          --bind=:port, and monotone will listen on all interfaces.
        - New option '--key-to-push' for 'push', 'sync', allows
          administrator to push a new user's public key into a running
          server without restarting it.
        - Netsync permission hooks have new defaults that read a
          description of allowed access out of a standard,
          basic_io-based textfile (the same stanza-based format that
          revisions use).  Current hooks will continue to work, but
          users may prefer to transition to this format; see manual
          for details.
        - Between these, it is now straightforward to change
          permissions and add users without restarting your server.
        - Improvements to experimental "usher" facility.

        UI improvements:
        - New convenience options "add --unknown", "drop --missing",
          "revert --missing" do what you'd expect -- add all
          non-ignored non-versioned files, drop all
          deleted-but-undropped files, and restore all
          deleted-but-undropped files, respectively.
        - New selector "h:" to select heads of a branch.  "h:" means
          heads of current branch, "h:mybranch" means heads of
          mybranch.
        - Similarly, "b:" selector with no argument now refers to
          current branch.
        - Commit messages now have a blank line at the top so you can
          start typing directly.
        - No more obscure error messages when multiple monotone
          processes attempt to access a single database at the same
          time; we now fail early with a more sensible error message.
          (Concurrent access has never caused database corruption;
          this simply makes the corruption prevention less frustrating
          for the user.)
        - New handlers for SIGTERM, SIGINT to rollback database
          transactions.  Not visible to users (unless you're really
          looking carefully).  (Again, killing monotone has never been
          able to cause database corruption; this simply causes the
          transactions to be rolled back immediately, rather than the
          next time monotone runs, which improves robustness in some
          theoretical way.)

        Changes in 'automate':
        - New command 'automate keys' to get information on existing
          keys in basic_io format.

        Updated translations:
        - fr

        Smaller changes:
        - Improved handling of multibyte characters in message
          displays.
        - Fixes to Botan's memory allocator, to avoid pathological
          slowdowns in some rare cases.
        - Fix bug in delta-storage code; we were not being as aggressive
          about delta-compressing files and manifests as we should
          have been.
        - Minor bugs fixed, error messages improved.

                - Upgrading from 0.23: You must run 'db migrate' and
                  provide your password, for each database.

Fri Sep 30 02:50:05 PDT 2005

        0.23 release.

        Possibly incompatible changes:
        - hook_note_commit and hook_note_netsync_revision_received
          take a new argument containing the text of the revision that
          was received.  (Timothy Brownawell <tbrownaw@gmail.com>)
        - 'cat FILENAME' now acts like the old 'cat file REV
          FILENAME'; use new commands 'automate get_revision',
          'automate get_manifest', 'automate get_file' to fetch
          objects by hash.  (Grahame Bowland <grahame@angrygoats.net>)

        General improvements:
        - .mt-ignore support (Martin Dvorak
          <jezek2@advel.cz>, Timothy Brownawell <tbrownaw@gmail.com>)
        - much work on making monotone more i18n friendly (Benoît
          Dejean <benoit@placenet.org>, Matt Johnston
          <matt@ucc.asn.au>)
        - support for more interactive merge tools:
          - FileMerge.app (comes with OS X) (Marcel van der Boom
            <marcel@hsdev.com>)
          - TortoiseMerge (Win32; comes with TortoiseSVN) (Matthew
            Gregan <kinetik@orcon.net.nz>)
        - rename and drop now actually perform the specified rename or
          deletion when the argument --execute is passed.  (Richard
          Levitte <richard@levitte.org>)
        - 'help' command, same as --help (Matt Johnston
          <matt@ucc.asn.au>).
        - 'usher' support: experimental method for proxying multiple
          netsync servers through a single port (similar concept to
          vhosts) (Timothy Brownawell <tbrownaw@gmail.com>)
        - support long passphrases (Matt Johnston <matt@ucc.asn.au>)
        - Faster binary file detection (Eric Anderson
          <anderse-monotone@cello.hpl.hp.com>)
        - netsync speedups:
          - when handling large files (Eric Anderson
            <anderse-monotone@cello.hpl.hp.com>)
          - when handling many branches (Marcel van der Boom
            <marcel@hsdev.com>)
        - new system to allow crash logs to contain not just execution
          traces, but also dumps of data being handled when the error
          was detected -- greatly improves debuggability of user
          crashes.
        - complete rework of path handling code, for clarity,
          robustness, and speed.  No user visible changes, except for
          the many bugs fixed.  (Special thanks to Matthew Gregan
          <kinetik@orcon.net.nz> and Grahame Bowland
          <grahame@angrygoats.net>.)
          - however, if you have non-normalized paths in your history
            (symptom: fresh pulls with 0.18 work, but fresh pulls with
            0.19 do not), then 0.23 will report an error and refuse to
            handle the affected revisions.  Since it is believed this
            only affects one project, and to conserve core developer
            time, implementing a migration was put off for now.  If
            this causes problems or for more details, please send an
            email to monotone-devel@nongnu.org.
        - as always, many small bug fixes, speedups, and improved
          messages.

        New translations:
        - fr (Benoît Dejean <benoit@placenet.org>)
        - ja (Satoru SATOH <ss@gnome.gr.jp>)

        Other new monotone-related projects since 0.22:
        - mtsh by Timothy Brownawell:
            https://netfiles.uiuc.edu/brownawe/www/mtsh/
          GTK+ wrapper for monotone focusing on working copy
          operations -- add/drop/revert/rename/commit/update/diff and
          browsing.  Has a mechanism for per-file commit comments.

        - "dumb server" support by Nathaniel Smith (share your
          monotone repositories via HTTP/FTP, no netsync daemon
          needed):
            http://viewmtn.angrygoats.net//branch.psp?branch=net.venge.monotone.dumb
          Still needs a command-line frontend to be usable, among
          other things.  Help wanted.  In python.

        - m7 by Larry Hastings <larry@hastings.org>
            http://www.midwinter.com/~lch/programming/m7/
          Experimental drop-in command-line wrapper for monotone.
          Uses certs to add local incrementing version numbers, and an
          enhanced annotate front-end.

Mon Aug  8 23:23:53 PDT 2005

        0.22 release.  new crypto library, bug fixes, ui improvements

        - switch from crypto++ to botan as underlying crypto library.
          this should not cause any user-visible changes; let us know
          if it does.  special thanks to Matt Johnston
          <matt@ucc.asn.au>, Kaushik Veeraraghavan
          <kaushikv@gmail.com>, Matthew Gregan
          <kinetik@orcon.net.nz>.
        - incompatible change to netsync permission hooks: the
          get_netsync_anonymous_read_permitted hook has been removed;
          instead, get_netsync_read_permitted will be called with a
          key name of nil.  server administrators should update/review
          their configuration
        - new option for merge and propagate: --lca.  Until we get a
          long-term solution to the various 3-way merge problems, this
          should be more convenient than using explicit_merge.
        - many small improvements to error messages, fixes of minor
          annoyances, netsync tickers more accurate, etc.

Sun Jul 17 16:48:26 PDT 2005

        0.21 release.  bug fixes, performance improvements, and ui
        improvements.

        - fixes a number of major performance bugs in 0.20's netsync
          implementation.  special thanks to Matt Johnston
          <matt@ucc.asn.au>.
        - fixes a number of major bugs in 0.20's (rewritten)
          cvs_import command.
        - configury kluges to work around g++ 4.0/boost 1.32
          incompatibilities.  special thanks to Christof Petig
          <christof@petig-baender.de>, Matthew Gregan
          <kinetik@orcon.net.nz>, Jordan Breeding
          <jordan.breeding@mac.com>.
        - ui enhancements:
          - new netsync option "--exclude": branches are included if
            they match any of the given globs, unless they match any
            of the given --exclude globs.  special thanks to Timothy
            Brownawell <tbrownaw@gmail.com>.
          - new netsync option client "--set-default": makes it easy
            to change default server/branches.
          - "diff" now takes options "--context" and "--external", to
            output context diffs and to invoke an external diff
            program for full control over output formatting.  new
            option "--diff-args" pass arguments to external diff
            program; new hook "external_diff" allows further
            configuration.  special thanks to Vladimir Vukicevic
            <vladimirv@gmail.com>.
          - b: and t: selectors now match exactly, instead of matching
            as substrings.  globbing is supported for inexact
            matching.  special thanks to Brian Downing
            <bdowning@lavos.net>, Jordan Breeding
            <jordan.breeding@mac.com>.
          - new command 'db kill_tag_locally'.  special thanks to Jordan
            Breeding <jordan.breeding@mac.com>.
        - now uses sqlite3 prepared statements.  special thanks to
          Derek Scherger <derek@echologic.com>.
        - 'db migrate' is now a complete no-op if there is no
          migration to do; automated scripts can now call it
          optimistically and cheaply to guarantee up-to-dateness.
        - new hash correctness tests.  special thanks to Kaushik
          Veeraraghavan <kaushikv@gmail.com>.

                - upgrading from 0.20: you must run 'monotone db
                  migrate' once against each of your databases, to add
                  new sql indexes.

Tue Jul  5 23:57:10 PDT 2005

        0.20 release.  features, ui improvements, performance
        improvements, and bug fixes.

        - major changes in netsync UI: serve/sync/push/pull now take a
          list of globs; clients can request arbitrary sets of
          branches, not just predefined "collections".  write
          permissions are now granted on a per-db level (they were
          before anyway).
                - where you used to say, e.g., "monotone pull
                  net.venge.monotone", you should instead say
                  "monotone pull net.venge.monotone*".  This may
                  require shell-quoting.
                - 'get_netsync_write_permitted' hooks must be changed
                  to take only one argument, the 'identity'.
                  'get_netsync_{read,anonymous_read}_permitted' hooks
                  now take a branch argument instead of a collection,
                  and will be called for each branch that a client
                  requests.
                - 0.19 clients cannot talk to 0.20 servers, and vice-versa.
                - special thanks to Timothy Brownawell
                  <tbrownaw@gmail.com>, Richard Levitte
                  <richard@levitte.org>.
        - other major changes:
                - cvs_import re-written; many bugs fixed.  now
                  supports tags.
        - many minor netsync changes:
                - netsync traffic is now cryptographically authenticated
                  against corruption and man-in-the-middle attacks.
                  special thanks to Ethan Blanton <elb@elitists.net>,
                  Matt Johnston <matt@ucc.asn.au>.
                - new hooks that are called when server receives data:
                  note_netsync_*_received.  special thanks to Timothy
                  Brownawell <tbrownaw@gmail.com>.
                - ancestry graphs that pass outside the given branch
                  are now synchronized correctly.  special thanks to
                  Timothy Brownawell <tbrownaw@gmail.com>.
        - UI improvements:
                - 'log' options changed: --depth has become --last;
                  new options --no-merges, --diffs, --brief.
                - 'status' has new option --brief.  special thanks to
                  Derek Scherger <derek@echologic.com>.
                - 'serve' has new option --pid-file.  special thanks
                  to Matthew Gregan <kinetik@orcon.net.nz>.
                - all commands taking restrictions now take option
                  --depth, to limit recursion through subdirectories.
                  special thanks to Joel Reed <joelwreed@comcast.com>.
                - merge command all take --author, --date now.
                - 'checkout', 'update' take --revision, instead of
                  using positional arguments.  special thanks to Derek
                  Scherger <derek@echologic.com>, Richard Levitte
                  <richard@levitte.org>.
                - 'commit' takes new --message-file option.
        - new features:
                - new commands: "db kill_branch_locally", "db
                  kill_revision_locally", useful for correcting some
                  mistakes.  special thanks to Brian Campbell
                  <brian.p.campbell@dartmouth.edu>, Sebastian Spaeth
                  <Sebastian@sspaeth.de>.
                - new file attribute 'manual_merge', to prevent invocation of
                  merger on binary files.  hook added to guess correct
                  value at 'add' time.  special thanks to Riccardo
                  Ghetta <birrachiara@tin.it>.
                - new 'earlier than', 'later than' selectors.  special
                  thanks to Riccardo Ghetta <birrachiara@tin.it>.
        - new automate commands:
                - 'stdio', for efficient use by
                  front-ends.  special thanks to Timothy Brownawell
                  <tbrownaw@gmail.com>.
                - 'certs', for fetching certs on a revision in a
                  parseable (basic io-based) format.  special thanks
                  to Grahame Bowland <grahame@angrygoats.net>.
                - 'inventory' output changed incompatibly; should be
                  much more usable now, and stable.  special thanks to
                  Derek Scherger <derek@echologic.com>.
        - better memory/performance when handling large files.
          special thanks to Eric Anderson
          <anderse-monotone@cello.hpl.hp.com>, Timothy Brownawell
          <tbrownaw@gmail.com>, Matt Johnston <matt@ucc.asn.au>,
          Matthew Gregan <kinetik@orcon.net.nz>.
        - new text mode browser in contrib/mtbrowse.sh, by Henry
          Nestler <Henry@BigFoot.de>.
        - improved zsh completion in contrib/monotone.zsh_completion,
          by Joel Reed <joelwreed@comcast.com>.

                - upgrading from 0.19: database and working copies are
                  fully compatible.  netsync clients and servers need
                  to be upgraded together, as described above.  the
                  many ui changes may require script updates.

Tue May  3 00:31:37 PDT 2005

        0.19 release.  performance improvements, features, ui
        improvements, and bug fixes.

        - many operations sped up by another factor of 2 or better.
                - special thanks to Matt Johnston <matt@ucc.asn.au>.
                - first steps towards automated benchmarking.  Thanks
                  to Timothy Brownawell <tbrownaw@gmail.com>.
        - new major features:
                - "annotate" command; still requires optimization.
                  Thanks to Emile Snyder <emile@alumni.reed.edu>.
                - "inodeprints" for fast change detection in large
                  working dirs now fully supported; see manual for
                  details.
        - new minor features:
                - new selector "c:name=value" for selecting on
                  arbitrary certs.  Thanks to Richard Levitte
                  <richard@levitte.org>.
                - new hooks to automatically initialize attributes on
                  add; monotone now automatically sets execute bit on
                  executables.  Thanks to Joel Reed
                  <joelwreed@comcast.net>.
                - new automate command "select", to do selector
                  expansion.  Thanks to Richard Levitte
                  <richard@levitte.org>.
                - new automate commands "graph", "parents",
                  "children", "ancestors", to easily inspect history.
                  Special thanks to Sebastian Spaeth
                  <Sebastian@SSpaeth.de>.
                - new command "db kill_rev_locally".  Thanks to
                  Sebastian Spaeth <Sebastian@sspaeth.de>.
                - new arguments to "commit": --author, --date; useful
                  for patch attribution and importing history.
                - new automate command "inventory" (output format will
                  change in next release, however).  Thanks to Derek
                  Scherger <derek@echologic.com>.
        - ui improvements:
                - netsync progress ticker in kilobytes/megabytes.
                  Thanks to Matt Johnston <matt@ucc.asn.au> and
                  Sebastian Spaeth <Sebastian@sspaeth.de>.
                - tickers do not cause annoying scrolling when wider
                  than window.  Special thanks to Matthew Gregan
                  <kinetik@orcon.net.nz>.
                - warn users when a commit creates divergence, and
                  when an update ignores it.  Thanks to Jeremy Cowgar
                  <jeremy@cowgar.com>.
                - support for command-specific options (there is still
                  no rule that such options must appear after the
                  command on the command line, though).  Thanks to
                  Richard Levitte <richard@levitte.org>.
        - bug fixes:
                - many cvs_import bugs fixed.  Special thanks to Jon
                  Bright <jon@siliconcircus.com>, Emile Snyder
                  <emile@alumni.reed.edu>, Hansjoerg Lipp
                  <hjlipp@web.de>, Matthew Gregan
                  <kinetik@orcon.net.nz>.
                - windows/unix working copy line ending conversion now
                  works correctly.  Thanks to Emile Snyder
                  <emile@alumni.reed.edu>.
                - many fixes to i18n-ized filename support
                - "drop" and "rename" now affect file attributes as
                  well.  Thanks to Richard Levitte
                  <richard@levitte.org> and Joel Reed
                  <joelwreed@comcast.com>.
                - better error reporting in netsync.  Thanks to
                  Grahame Bowland <grahame@angrygoats.net>.
                - only set working directory's default branch on some
                  commands (update, commit).  Thanks to Florian Weimer
                  <fw@deneb.enyo.de>.
                - "db check" now sets exit status correctly, for use
                  in scripts.  Thanks to Derek Scherger
                  <derek@echologic.com>.
                - many others...
        - fantastic emacs integration in contrib/monotone.el.  Thanks
          to Harley Gorrell <harley@panix.com>.
        - 45 new integration tests.  total line coverage: ~84%.

                - upgrading from 0.18: database and working copies are
                  fully compatible.  NOTE that the configuration file
                  is now ~/.monotone/monotonerc, rather than old
                  ~/.monotonerc.  Simply create ~/.monotone, and
                  rename any existing configuration file.

Sun Apr 10 17:49:25 PDT 2005

        0.18 release.  performance improvements, features, and bug fixes.
    This release is dedicated to Shweta Narayan.

        - most operations sped up by a factor of 2 or better; many sped up
      by up several orders of magnitude.
                - special thanks to Matt Johnston <matt@ucc.asn.au>, Derek
                  Scherger <derek@echologic.com>, Linus Torvalds
                  <torvalds@osdl.org>.
        - new concept: "database vars".  Used in several features below.
        - new features:
                - new file "MT/log" can be edited while you work,
                  sets default changelog.  (no change in behaviour if
                  you do not edit it.)  Thanks to Jeremy Cowgar
                  <jeremy@cowgar.com>.
                - monotone now stores default netsync
                  server/collection, initialized on first use of
                  netsync.
                - you no longer need to manually import server
                  keys, monotone will fetch the key from the server on
                  first netsync.
                - monotone keeps track of keys of servers you have
                  previously synced with, to prevent man-in-the-middle
                  attacks.
                - several powerful new "automate" commands added.
        - new command 'ls known', lists files that are under version
          control.  Thanks to Florian Weimer <fw@deneb.enyo.de>.
        - preliminary "inodeprints" functionality -- speeds up diff,
          status, etc.  No UI or documentation yet -- in a working
          copy, 'touch MT/inodeprints' to enable, then commit or
          update to populate cache.
        - UI improvements:
                - Added short options -r, -b, -k, -m.
                - default to 'dot' ticker-style when stderr is
                  not a tty, thanks to Derek Scherger
                  <derek@echologic.com>.
                - New "-@/--xargs" option, helpful when using new
                  automate commands.  Thanks to Richard Levitte
                  <richard@levitte.org>.
                - New "--depth" argument to 'log'.  Thanks to Richard
                  Levitte <richard@levitte.org>.
                - 'db info' gives statistics on space usage.
                - new command 'dropkey'.  Thanks to Jeremy Cowgar
                  <jeremy@cowgar.com>.
        - robustness improvement: if monotone crashes in a working
          directory and --dump and --debug were not specified, saves
          debug dump to "MT/debug" for analysis, instead of
          discarding.
        - new contributed scripts: CIA (cia.navi.cx) notification,
          email notification, Bash completion.
        - 33 new integration tests.  total line coverage: ~82%.
        - many bug fixes
        - Special thanks to Matt Johnston <matt@ucc.asn.au>,
          for going above and beyond to track down the last
          release blocker.

                - upgrading from 0.17 requires only a 'db migrate'.

Fri Mar 18 15:38:52 PST 2005

        0.17 release. bug fixes and features.

        - many, many robustness improvements
                - more careful checking everywhere
                - much more thorough test suite
                - all revisions subject to careful checks before
                  entering database
                        - not yet fully optimized; "pull" may be very
                          slow and use lots of cpu
                - support for "epochs", to safely manage future
                  rebuilds, hash migration, etc.
                - new "db check" command, thanks to Derek Scherger
                  <derek@echologic.com>.
        - now uses sqlite3, thanks to Christof Petig
          <christof@petig-baender.de>.
                - removes most former size limitations
        - "restrictions" support, thanks to Derek Scherger
          <derek@echologic.com>.
                - most commands now take a list of files to limit
                  their actions to
                - monotone can now be run from anywhere in the working
                  directory (not just the root)
                - new command "monotone setup" required to create a
                  working directory for a new project
        - important security fix -- don't use shell when calling
          external merge commands.
        - format change for "MT/options", ".mt-attrs"; you may have to
          edit these files
                - new command "attr" for managing .mt-attrs.
        - builds merkle tries in-memory -- netsync starts up many
          times faster
        - start of new "automate" interface, for shell scripts and
          others.
        - new command "cdiff": generates context diffs.
        - remove most of now-obsolete manifest/file cert support.
        - 60+ new integration tests.
        - many portability fixes
                - in particular, major win32 cleanups, thanks to Jon
                  Bright <jon@siliconcircus.com>.  win32 is once again
                  fully and natively supported.
        - many bug fixes

                - several incompatible changes: see file UPGRADE for
                  migration information

Thu Dec 30 01:37:54 EST 2004

    0.16 release. bug fixes.

    - 50+ new integration tests
    - many NetBSD portability fixes
    - release build on gcc 3.4 / FC3
    - masses of changeset bugs in 0.15 fixed

        - some bogus changesets were generated
          in the 0.16 development cycle. you will
          need to rebuild revision graph.


Sun Nov  7 14:06:03 EST 2004

    0.15 release. major changes.

    - overhauled the internal representation of changes. see
      README.changesets for details
    - fixed bugs in merkle trie synchronization code
    - fixed echoing and progress UI bugs
      (helps when using in emacs)
    - upgraded cryptopp to 5.2.1
    - fixed bug 8715, diff hunk coordinate reporting
    - added figures, new tutorial to manual
    - improve accuracy of log command
    - several build, configure, and linkage fixes
    - some OSX / PPC portability fixes

Sat Jul 31 15:38:02 EDT 2004

    0.14 release. bug fixes.

    - some compile fixes for g++ 3.4
    - made --dump=FILE option for saving traces,
      otherwise failures just print reason (no trace)
    - some things disabled, as scheduled for replacement
      by upcoming changeset branch work
        - disabled "disapprove" command due to bad semantics
        - removed "bump" and .mt-nonce machinery
    - several critical rename-merging bugs fixed
        - renames vs. deletes
        - renames vs. deltas
        - parallel renames
    - bugs fixed from savannah bug tracker:
        - 9223 argv overflow
        - 9075 empty commits
        - 8919 rename --verbose to --debug
        - 8958 rename debug to db execute
        - 8920 empty passphrase message
        - 8917 connection refused message
        - 8913 testresult argument
        - 8912 passphrase read on serve
        - 8472 approve into branch
        - 8428 duplicate key warning
        - 8928 nonce uses too many bits

Thu May 20 22:26:27 EDT 2004

    0.13 release. bug fixes.

    - remove (file|manifest) in several commands
    - "list missing" command
    - fixed bugs:
        - (critical) empty data netsync crash
        - mkstemp, platform lua
        - runtime error reporting chatter
        - non-posix database names
        - non-posix dirnames
        - non-posix merge names
        - 2-way merge algorithm and hook
        - single-character filenames
        - multiple password reads
        - .svn ignore pattern

Sun May  2 21:03:38 EDT 2004

    0.12 release. win32 port, bug fixes and optimizations.

    - ported to native win32 (mingw)
    - implemented human friendly version selectors
    - added post-commit hook for change notification
    - removed spirit-based parsers, reduced compile costs
    - many netsync bugs removed, pipeline performance improved
    - removed old, deprecated networking system
    - several minor CVS import bugs fixed
    - upgraded bundled netxx

Sun Mar 28 12:41:07 EST 2004

    0.11 release. bug fixes and optimizations.

    NOTE: this release expands the sqlite page size. YOU WILL NEED
    to dump existing databases before upgrading and reload it
    after upgrading, otherwise monotone will complain that the
    database image appears malformed. this condition cannot
    unfortunately be distinguished from a real malformed image on
    disk. for example:

        $ monotone --db=my.db db dump >dump.sql
        $ <upgrade to new monotone>
        $ mv my.db my.db.backup
        $ monotone --db=my.db db load <dump.sql

    - fixed bugs:
        - aliasing bug on debian (-O2 now works)
        - netsync ppc portability / checksums
        - sha1 whitespace bug
        - netsync broken formatter
        - broken symlink handling
        - merger execution pessimism
        - LCA bitset calculation pessimism
        - static object initialization order
        - CVS single-version import
        - CVS first-version changelog
        - CVS branch inference and topology
    - cryptographic SSE2 paths enabled on linux/x86.
    - builds against boost 1.31.0.
    - removed boost::socket
    - removed documentation about old networking system.
    - "officially" deprecated old networking system.
    - enable building with system-local libraries.
    - upgraded bundled sqlite.
    - changed sqlite page size from 1k -> 8k

Mon Mar  1 00:32:07 EST 2004

    0.10 release. new "netsync" protocol implemented, allowing
    direct monotone-to-monotone database synchronization. random
    number underflow problem fixed. more tests added. database
    schema changed, must migrate schema. added new QA logic to
    update and merge algorithms (testresult / approval).

Thu Jan  1 18:23:06 EST 2004

    0.9 release. support international users (non-ASCII character
    sets, locales). some corrections to update algorithm. line
    merging algorithm reimplemented. support working copy
    MT/monotonerc file. broke format compatibility with MT/work
    files; commit any pending work before upgrading. permit
    spaces, colons, other "funny" characters in filenames. support
    HTTP 1.1, HTTP proxies, handle some corner cases in ancestry
    graph and database faults.

Fri Nov 21 20:25:26 EST 2003

    0.8 release. row size increased to 16mb. more performance
    improvements in cvs importer. cvs branch tags imported now.
    minor UI improvements. new commands: SQL dump and load, vcheck
    for enhanced collision detection, queue addtree for recursive
    queueing. improved networking scalability. historical rename
    certs and .mt-attrs file format changed to accomodate upcoming
    i18n work.

Sun Nov  2 23:38:09 EST 2003

    0.7 release. many critical merge and patch set calculation
    bugs fixed. groups merged with URLs, "monotone db migrate"
    necessary. directory renames and explicit rename certs
    supported. added SMTP support. incorporated adns library,
    avoiding gethostbyname(). new queue commands.

Sat Oct 18 22:10:09 EDT 2003

    0.6 release. more stability and bug fixing, including fix to
    some silent failures in LCA calculation. some minor new
    features: persistent attributes (eg. 'the execute bit'),
    rename and log commands. performance of cvs importer greatly
    improved, lua system upgraded to 5.0, much expanded
    documentation.

Sat Sep 27 11:50:08 EDT 2003

    0.5 release. stability and bug fixing. many UI issues
    addressed, including SHA1 completion, persistent options, new
    revert command and new diff modes. database migration,
    inspection and debugging interfaces added. LCS algorithm and
    line-merger overhauled. several multi-depot bugs
    fixed. existing depot databases should be migrated (depot.cgi
    migratedb).

Thu Sep  4 15:40:07 EDT 2003

    0.4 release. monotone is now self-hosting. database
    compatibility broken since 0.3. depot uses RSA signatures now,
    not mac keys. many bugs removed. depot database compatibility
    broken. database schemas should now remain stable (or be
    provided with safe schema-upgrading function).

Mon Aug 25 18:00:37 EDT 2003

    0.3 release. database compatibility broken. packet format
    compatibility broken. dropped boost sandbox library dependency.
    redid networking to support private HTTP+CGI depots along with
    netnews. wrote depot. added 'propagate' command to move changes
    between branches asymmetrically. rewrote testsuite in autotest.
    cleaned up command line processing. expanded testsuite. improved
    user-friendly error reporting.

Fri Aug  8 10:20:01 EDT 2003

    0.2 release. database compatibility broken. dropped many
    library dependencies. hand-reimplemented xdelta, parts of
    nana. incorporated subset of cryptopp and sqlite into
    sources. added RCS and CVS importer. switched to piecewise
    reconstruction. generally much more robust storage system.
    scalability tests against real world CVS archives show
    performance gap with CVS closing, but still present.

Sun Apr 6 20:20:42 EDT 2003

    initial release