Knowledge

Darcs

Source 📝

777: 405: 1675: 646: 229: 133: 87: 1861: 1851: 1841: 27: 477:, p. 2: ‘One of the problems I had with the initial C++ darcs was that I had no unit testing code. Within two weeks of the first darcs record, I started using QuickCheck to test the patch functions, and the same day I fixed a bug that was discovered by QuickCheck. QuickCheck makes it very easy to define properties that functions must have, which are then tested with randomly generated data.’ 389:
Darcs has been criticized for its performance issues. This includes challenges related to the merge algorithms of Darcs 1.x, which showed exponential work to merge certain conflicts. Although not resolved completely in the subsequent versions of Darcs, the frequency of exponential merges did show
311:
can be directly done with Darcs with the usual "pull" and "push" commands. In terms of user interface, this means that Darcs has fewer commands. These commands are more interactive: one can choose more precisely which patches they want to exchange with remote repositories.
376:
version was written in Autumn 2002 and released to the public in April 2003. Darcs 2.0 was released in April 2008 and introduced a more robust repository format, as well as a new patch semantic called "darcs-2", aimed at minimizing exponential
352:
modifies. This means that patches that modify different parts of the code are considered, by default, independent. To address cases when this is not desirable, Darcs enables the user to specify explicit dependencies between patches.
315:
The patches of a repository are linearly ordered. Darcs automatically calculates whether patches can be reordered (an operation called commutation), and how to do it. These calculations implement a so-called "patch theory".
1235: 368:
in June 2002. These discussions didn't lead to any code being committed to Arch, but did lead to the conception of the theory of patches. After writing an initial version of Darcs in
249:. Key features include the ability to choose which changes to accept from other repositories, interaction with either other local (on-disk) repositories or remote repositories via 292:. For the user, a repository can be seen as a set of patches, where each patch is not necessarily ordered with respect to other patches, i.e. the set of patches is only a 540: 257:, or email, and an unusually interactive interface. The developers also emphasize the use of advanced software tools for verifying correctness: the expressive 871: 673: 381:. The current development strategy focuses on implementing optimizations and adding new features, while maintaining the same repository format. 904: 1242: 1896: 1891: 1855: 1901: 1201: 1007: 741: 666: 418: 332:
word substitution (typically used in code refactoring, for instance rename all occurrences of "foo" to "bar" in a given file).
1886: 562: 1119: 488: 410: 1269: 1109: 1072: 910: 852: 1739: 659: 613: 546: 1784: 1759: 1208: 1194: 191: 940: 373: 265: 1769: 1591: 1401: 708: 1433: 1386: 1366: 1308: 1228: 1175: 110: 1729: 1441: 1379: 1348: 1287: 1160: 1114: 963: 947: 254: 242: 78: 303:, and cherry-picking operations that would require additional commands with snapshot-based systems like 1809: 1372: 798: 776: 722: 522: 208: 1865: 1422: 1653: 1628: 1293: 1131: 228: 86: 1565: 1165: 716: 300: 262: 856: 846: 1699: 1577: 1081: 934: 293: 1840: 1834: 1674: 1571: 733: 8: 1469: 1336: 1066: 1046: 885: 842: 289: 336:
The notion of dependency between patches is defined syntactically. Intuitively, a patch
296:. In many cases patches can be independently transmitted between various repositories. 132: 1789: 1734: 1689: 1615: 1354: 1313: 1148: 864: 645: 619: 691:
Years, where available, indicate the date of first stable release. Systems with names
437: 1014: 986: 816: 609: 273: 184: 623: 454: 1749: 1527: 1510: 1478: 1299: 1274: 928: 601: 487:
Roundy, David (2008-10-21), "prefer recursive acronymn (sic) to embarrassing one",
461: 203: 157: 1764: 1516: 1502: 1485: 1409: 1155: 682: 196: 539:
Fendt, Robert (January 9, 2009), "DVCS Round-Up: One System to Rule Them All?",
1744: 1635: 1143: 898: 304: 1845: 1880: 1814: 1779: 1716: 1557: 1450: 892: 878: 378: 364:
Darcs evolved out of David Roundy's efforts to design a new patch format for
605: 119: 1794: 1774: 1180: 1136: 922: 651: 250: 246: 39: 596:
Roundy, David (2005), "Darcs: distributed version management in Haskell",
1804: 1416: 1088: 833: 258: 174: 579:"Issue 1520 Irrefutable pattern failed for pattern Data.Maybe.Just a2", 1754: 1491: 1034: 993: 269: 46: 34: 1220: 1660: 1609: 1540: 1126: 1040: 979: 308: 181: 1799: 1447: 1260: 1170: 1027: 916: 747: 365: 1393: 580: 462:"darcs: a distributed, interactive, smart revision control system" 1535: 1360: 1251: 393:
Bugs still remain in which merging of recursive conflicts fails.
148: 1708: 1646: 1641: 1603: 1546: 1621: 804: 369: 177: 166: 26: 506: 810: 760: 753: 695:
are no longer maintained or have planned end-of-life dates.
162: 521:
Marlow, Simon (March 7, 2007), "Current status of Darcs",
319:
A Darcs patch can contain changes of the following kinds:
1324: 1020: 356:
Since version 2.10, Darcs uses patience diff by default.
170: 598:
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
268:
enforces some properties, and randomized testing via
639: 400: 219: 468: 1878: 545:, vol. 1, Linux Foundation, archived from 430: 1236: 667: 681: 1243: 1229: 674: 660: 644: 227: 131: 85: 25: 326:file and directory creation and deletion, 1250: 1879: 595: 520: 486: 474: 419:Comparison of version control software 278:Darcs Advanced Revision Control System 1707: 1224: 655: 538: 272:verifies many others. The name is a 411:Free and open-source software portal 1897:Free software programmed in Haskell 1892:Distributed version control systems 13: 600:, Tallinn, Estonia, pp. 1–4, 16:Distributed version control system 14: 1913: 631: 1860: 1859: 1850: 1849: 1839: 1673: 775: 403: 384: 263:functional programming language 572: 554: 532: 514: 498: 480: 1: 1902:Free version control software 424: 1887:Cross-platform free software 7: 396: 243:distributed version control 10: 1918: 359: 348:provides the content that 329:file and directory moving, 51:Guillaume Hoffmann, et al. 1823: 1698: 1682: 1671: 1587: 1556: 1526: 1501: 1468: 1432: 1344: 1335: 1283: 1268: 1259: 1189: 1102: 1056: 971: 962: 826: 791: 784: 773: 732: 707: 700: 689: 340:depends on another patch 214: 202: 190: 156: 142: 109: 105: 77: 73: 55: 45: 33: 24: 1294:Glasgow Haskell Compiler 683:Version control software 390:noticeable reductions. 288:Darcs treats patches as 283: 911:Software Change Manager 606:10.1145/1088348.1088349 527:(mailing list), OSUOSL 92:; 5 months ago 61:; 21 years ago 1320:York Haskell Compiler 438:"Changelog for darcs" 294:partially ordered set 1835:Open-source software 290:first-class citizens 493:(Commit), Darcs Hub 21: 1790:Simon Peyton Jones 1735:Lennart Augustsson 1690:Real World Haskell 1355:Concurrent Haskell 245:system created by 59:March 3, 2003 35:Original author(s) 19: 1874: 1873: 1866:Category:Software 1725: 1724: 1669: 1668: 1528:Windowing systems 1464: 1463: 1460: 1459: 1434:Electronic design 1218: 1217: 1144:Delta compression 1098: 1097: 958: 957: 948:Visual SourceSafe 801:(1986, 1990 in C) 771: 770: 542:Developer Network 274:recursive acronym 236: 235: 1909: 1863: 1862: 1853: 1852: 1843: 1750:Andrew D. Gordon 1705: 1704: 1677: 1503:Package managers 1479:Haskell Platform 1342: 1341: 1300:Template Haskell 1281: 1280: 1266: 1265: 1245: 1238: 1231: 1222: 1221: 1075:(via Git) (2014) 1069:(via Git) (2013) 972:Free/open-source 969: 968: 792:Free/open-source 789: 788: 779: 709:Free/open-source 705: 704: 676: 669: 662: 653: 652: 648: 643: 642: 640:Official website 626: 588: 586: 576: 570: 568: 561:"ConflictsFAQ", 558: 552: 550: 536: 530: 528: 518: 512: 511: 502: 496: 494: 484: 478: 472: 466: 465: 458: 452: 451: 449: 448: 434: 413: 408: 407: 406: 299:Many branching, 232: 231: 224: 221: 209:GPL-2.0-or-later 158:Operating system 152: 151: 135: 130: 127: 125: 123: 121: 100: 98: 93: 89: 69: 67: 62: 29: 22: 18: 1917: 1916: 1912: 1911: 1910: 1908: 1907: 1906: 1877: 1876: 1875: 1870: 1856:Category:Family 1838: 1819: 1770:John MacFarlane 1765:John Launchbury 1721: 1694: 1678: 1665: 1583: 1552: 1522: 1497: 1456: 1428: 1331: 1288:Generic Haskell 1272: 1270:Implementations 1255: 1249: 1219: 1214: 1185: 1156:File comparison 1094: 1052: 954: 822: 811:QVCS Enterprise 780: 767: 728: 696: 685: 680: 638: 637: 634: 629: 616: 591: 578: 577: 573: 560: 559: 555: 537: 533: 519: 515: 504: 503: 499: 485: 481: 473: 469: 460: 459: 455: 446: 444: 436: 435: 431: 427: 409: 404: 402: 399: 387: 379:merge conflicts 362: 286: 226: 218: 197:Version control 147: 146: 138: 128:/darcs-reviewed 118: 101: 96: 94: 91: 90:/ 24 March 2024 65: 63: 60: 56:Initial release 17: 12: 11: 5: 1915: 1905: 1904: 1899: 1894: 1889: 1872: 1871: 1869: 1829:= discontinued 1824: 1821: 1820: 1818: 1817: 1812: 1810:Simon Thompson 1807: 1802: 1797: 1792: 1787: 1782: 1777: 1772: 1767: 1762: 1757: 1752: 1747: 1745:Jeremy Gibbons 1742: 1737: 1732: 1726: 1723: 1722: 1720: 1719: 1713: 1711: 1702: 1696: 1695: 1693: 1692: 1686: 1684: 1680: 1679: 1672: 1670: 1667: 1666: 1664: 1663: 1658: 1650: 1644: 1639: 1636:Liquid Haskell 1633: 1625: 1619: 1613: 1607: 1601: 1595: 1588: 1585: 1584: 1582: 1581: 1575: 1569: 1562: 1560: 1558:Web frameworks 1554: 1553: 1551: 1550: 1544: 1538: 1532: 1530: 1524: 1523: 1521: 1520: 1514: 1507: 1505: 1499: 1498: 1496: 1495: 1489: 1483: 1474: 1472: 1466: 1465: 1462: 1461: 1458: 1457: 1455: 1454: 1445: 1438: 1436: 1430: 1429: 1427: 1426: 1420: 1414: 1406: 1398: 1390: 1384: 1376: 1370: 1364: 1358: 1352: 1345: 1339: 1333: 1332: 1330: 1329: 1317: 1305: 1304: 1303: 1291: 1284: 1278: 1263: 1257: 1256: 1248: 1247: 1240: 1233: 1225: 1216: 1215: 1213: 1212: 1205: 1198: 1190: 1187: 1186: 1184: 1183: 1178: 1173: 1168: 1163: 1158: 1153: 1152: 1151: 1141: 1140: 1139: 1129: 1124: 1123: 1122: 1112: 1106: 1104: 1100: 1099: 1096: 1095: 1093: 1092: 1086: 1078: 1077: 1076: 1070: 1060: 1058: 1054: 1053: 1051: 1050: 1044: 1038: 1032: 1024: 1018: 1012: 1004: 998: 990: 984: 975: 973: 966: 960: 959: 956: 955: 953: 952: 944: 938: 932: 926: 920: 914: 908: 902: 899:Perforce Helix 896: 890: 882: 876: 868: 862: 861: 860: 850: 837: 830: 828: 824: 823: 821: 820: 814: 808: 802: 795: 793: 786: 782: 781: 774: 772: 769: 768: 766: 765: 757: 751: 745: 738: 736: 730: 729: 727: 726: 720: 713: 711: 702: 698: 697: 690: 687: 686: 679: 678: 671: 664: 656: 650: 649: 633: 632:External links 630: 628: 627: 614: 592: 590: 589: 571: 553: 531: 513: 497: 479: 467: 453: 428: 426: 423: 422: 421: 415: 414: 398: 395: 386: 383: 361: 358: 334: 333: 330: 327: 324: 285: 282: 234: 233: 216: 212: 211: 206: 200: 199: 194: 188: 187: 160: 154: 153: 144: 140: 139: 137: 136: 115: 113: 107: 106: 103: 102: 83: 81: 79:Stable release 75: 74: 71: 70: 57: 53: 52: 49: 43: 42: 37: 31: 30: 15: 9: 6: 4: 3: 2: 1914: 1903: 1900: 1898: 1895: 1893: 1890: 1888: 1885: 1884: 1882: 1868: 1867: 1858: 1857: 1848: 1847: 1842: 1837: 1836: 1831: 1830: 1827: 1822: 1816: 1815:Philip Wadler 1813: 1811: 1808: 1806: 1803: 1801: 1798: 1796: 1793: 1791: 1788: 1786: 1783: 1781: 1780:Conor McBride 1778: 1776: 1773: 1771: 1768: 1766: 1763: 1761: 1758: 1756: 1753: 1751: 1748: 1746: 1743: 1741: 1738: 1736: 1733: 1731: 1728: 1727: 1718: 1717:Haskell Curry 1715: 1714: 1712: 1710: 1706: 1703: 1701: 1697: 1691: 1688: 1687: 1685: 1681: 1676: 1662: 1659: 1656: 1655: 1651: 1648: 1645: 1643: 1640: 1637: 1634: 1631: 1630: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1593: 1590: 1589: 1586: 1579: 1576: 1573: 1570: 1567: 1564: 1563: 1561: 1559: 1555: 1548: 1545: 1542: 1539: 1537: 1534: 1533: 1531: 1529: 1525: 1518: 1515: 1512: 1509: 1508: 1506: 1504: 1500: 1493: 1490: 1487: 1484: 1481: 1480: 1476: 1475: 1473: 1471: 1467: 1452: 1451:SystemVerilog 1449: 1446: 1443: 1440: 1439: 1437: 1435: 1431: 1424: 1421: 1418: 1415: 1412: 1411: 1407: 1404: 1403: 1399: 1396: 1395: 1391: 1388: 1385: 1382: 1381: 1377: 1374: 1371: 1368: 1365: 1362: 1359: 1356: 1353: 1350: 1347: 1346: 1343: 1340: 1338: 1334: 1327: 1326: 1321: 1318: 1315: 1311: 1310: 1306: 1301: 1298: 1297: 1295: 1292: 1289: 1286: 1285: 1282: 1279: 1276: 1271: 1267: 1264: 1262: 1258: 1253: 1246: 1241: 1239: 1234: 1232: 1227: 1226: 1223: 1211: 1210: 1206: 1204: 1203: 1199: 1197: 1196: 1192: 1191: 1188: 1182: 1179: 1177: 1174: 1172: 1169: 1167: 1164: 1162: 1159: 1157: 1154: 1150: 1147: 1146: 1145: 1142: 1138: 1135: 1134: 1133: 1130: 1128: 1125: 1121: 1118: 1117: 1116: 1113: 1111: 1108: 1107: 1105: 1101: 1090: 1087: 1084: 1083: 1079: 1074: 1071: 1068: 1065: 1064: 1063:Azure DevOps 1062: 1061: 1059: 1055: 1048: 1045: 1042: 1039: 1036: 1033: 1030: 1029: 1025: 1022: 1019: 1016: 1013: 1010: 1009: 1005: 1002: 999: 996: 995: 991: 988: 985: 982: 981: 977: 976: 974: 970: 967: 965: 961: 950: 949: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 888: 887: 883: 880: 879:Dimensions CM 877: 874: 873: 869: 866: 863: 858: 854: 851: 848: 844: 841: 840: 839:Azure DevOps 838: 835: 832: 831: 829: 825: 818: 815: 812: 809: 806: 803: 800: 797: 796: 794: 790: 787: 785:Client–server 783: 778: 763: 762: 758: 755: 752: 749: 746: 743: 742:The Librarian 740: 739: 737: 735: 731: 724: 721: 718: 715: 714: 712: 710: 706: 703: 699: 694: 688: 684: 677: 672: 670: 665: 663: 658: 657: 654: 647: 641: 636: 635: 625: 621: 617: 615:1-59593-071-X 611: 607: 603: 599: 594: 593: 584: 583: 575: 566: 565: 557: 549:on 2009-02-28 548: 544: 543: 535: 526: 525: 517: 510: 509: 501: 492: 491: 483: 476: 471: 463: 457: 443: 439: 433: 429: 420: 417: 416: 412: 401: 394: 391: 382: 380: 375: 371: 367: 357: 354: 351: 347: 343: 339: 331: 328: 325: 323:line changes, 322: 321: 320: 317: 313: 310: 306: 302: 297: 295: 291: 281: 279: 275: 271: 267: 264: 260: 256: 252: 248: 244: 240: 230: 223: 217: 213: 210: 207: 205: 201: 198: 195: 193: 189: 186: 183: 179: 176: 172: 168: 164: 161: 159: 155: 150: 145: 141: 134: 129: 117: 116: 114: 112: 108: 104: 97:24 March 2024 88: 82: 80: 76: 72: 58: 54: 50: 48: 44: 41: 38: 36: 32: 28: 23: 1864: 1854: 1844: 1832: 1828: 1825: 1795:David Roundy 1775:Simon Marlow 1740:Richard Bird 1652: 1627: 1597: 1477: 1408: 1400: 1392: 1378: 1323: 1319: 1307: 1207: 1200: 1193: 1080: 1026: 1006: 1000: 992: 978: 946: 935:Team Concert 923:Surround SCM 884: 870: 759: 692: 597: 581: 574: 563: 556: 547:the original 541: 534: 523: 516: 507: 500: 489: 482: 470: 456: 445:. Retrieved 441: 432: 392: 388: 385:Shortcomings 363: 355: 349: 345: 341: 337: 335: 318: 314: 298: 287: 277: 247:David Roundy 238: 237: 84:2.18.2  47:Developer(s) 40:David Roundy 1805:Audrey Tang 1785:Erik Meijer 1760:John Hughes 1417:TidalCycles 1254:programming 1149:Interleaved 1089:Plastic SCM 1057:Proprietary 964:Distributed 834:AccuRev SCM 827:Proprietary 734:Proprietary 582:Bug Tracker 524:Darcs users 475:Roundy 2005 259:type system 1881:Categories 1755:Paul Hudak 1492:QuickCheck 1202:Comparison 1176:Repository 1035:GNU Bazaar 994:Code Co-op 817:Subversion 701:Local only 693:in italics 447:2018-06-24 425:References 270:QuickCheck 143:Written in 111:Repository 66:2003-03-03 1700:Community 1661:SQream DB 1610:git-annex 1541:wxHaskell 1470:Libraries 1127:Changeset 1041:Mercurial 980:BitKeeper 893:Integrity 865:ClearCase 309:Mercurial 1800:Joe Stoy 1448:Bluespec 1337:Dialects 1275:features 1261:Software 1195:Category 1171:Monorepo 1110:Baseline 1103:Concepts 1082:TeamWare 1073:Services 1047:Monotone 1028:GNU arch 917:StarTeam 907:(1980s?) 859:) (2014) 853:Services 849:) (2005) 748:Panvalet 624:13932981 397:See also 366:GNU arch 1826:Italics 1654:Paradox 1616:Haddock 1592:Cardano 1566:Servant 1536:Fudgets 1361:Cryptol 1252:Haskell 929:Synergy 913:(1970s) 881:(1980s) 750:(1970s) 585:, Darcs 567:, Darcs 505:"Two", 442:Hackage 374:Haskell 360:History 301:merging 266:Haskell 261:of the 215:Website 204:License 185:Windows 149:Haskell 95: ( 64: ( 1730:Arvind 1709:Eponym 1647:Pandoc 1642:LOLITA 1604:Ganeti 1547:xmonad 1486:Parsec 1402:Orwell 1132:Commit 1115:Branch 1091:(2006) 1085:(1992) 1067:Server 1049:(2003) 1043:(2005) 1037:(2005) 1031:(2001) 1023:(2005) 1017:(2007) 1015:Fossil 1011:(2002) 1003:(2002) 997:(1997) 989:(2017) 987:Breezy 983:(2000) 951:(1994) 943:(2003) 937:(2008) 931:(1990) 925:(2002) 919:(1995) 901:(1995) 895:(2001) 889:(1984) 875:(1994) 867:(1992) 843:Server 836:(2002) 819:(2000) 813:(1998) 807:(1998) 764:(1991) 756:(1985) 744:(1969) 725:(1973) 719:(1982) 622:  612:  372:, the 225:  126:/darcs 122:.darcs 1629:House 1622:HaXml 1598:Darcs 1578:Yesod 1517:Stack 1511:Cabal 1453:(BSV) 1394:Ωmega 1387:Idris 1367:Curry 1309:Gofer 1166:Merge 1137:Gated 1120:Trunk 1001:Darcs 941:Vault 855:(via 845:(via 805:CVSNT 620:S2CID 508:Darcs 490:Darcs 284:Model 241:is a 239:Darcs 220:darcs 178:macOS 175:Apple 167:Linux 20:Darcs 1846:Book 1833:° = 1683:Book 1572:Snap 1442:Atom 1410:Pugs 1380:Hume 1349:Agda 1314:Hugs 1312:° → 1209:List 1161:Fork 1008:DCVS 905:SCLM 886:DSEE 872:CMVC 857:TFVC 847:TFVC 761:QVCS 754:PVCS 723:SCCS 610:ISBN 564:Wiki 276:for 255:HTTP 222:.net 192:Type 163:Unix 124:.net 1373:Elm 1325:Yhc 1322:° ( 1181:Tag 1021:Git 799:CVS 717:RCS 602:doi 370:C++ 344:if 307:or 305:Git 251:SSH 171:BSD 120:hub 1883:: 1423:Ur 1296:° 618:, 608:, 440:. 280:. 253:, 182:MS 180:, 173:, 169:, 165:, 1657:° 1649:° 1638:° 1632:° 1624:° 1618:° 1612:° 1606:° 1600:° 1594:° 1580:° 1574:° 1568:° 1549:° 1543:° 1519:° 1513:° 1494:° 1488:° 1482:° 1444:° 1425:° 1419:° 1413:° 1405:° 1397:° 1389:° 1383:° 1375:° 1369:° 1363:° 1357:° 1351:° 1328:) 1316:° 1302:° 1290:° 1277:) 1273:( 1244:e 1237:t 1230:v 675:e 668:t 661:v 604:: 587:. 569:. 551:. 529:. 495:. 464:. 450:. 350:B 346:A 342:A 338:B 99:) 68:)

Index

darcs logo
Original author(s)
David Roundy
Developer(s)
Stable release
Edit this on Wikidata
Repository
hub.darcs.net/darcs/darcs-reviewed
Edit this at Wikidata
Haskell
Operating system
Unix
Linux
BSD
Apple
macOS
MS
Windows
Type
Version control
License
GPL-2.0-or-later
darcs.net
Edit this on Wikidata
distributed version control
David Roundy
SSH
HTTP
type system
functional programming language

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.