Knowledge

Branching (version control)

Source 📝

622: 131:. Often main developer work takes place in the trunk and stable versions are branched, and occasional bug-fixes are merged from branches to the trunk. When development of future versions is done in non-trunk branches, it is usually done for projects that do not change often, or where a change is expected to take a long time to develop until it will be ready for incorporating in the trunk. 107:. The trunk is also sometimes loosely referred to as HEAD, but properly head refers not to a branch, but to the most recent commit on a given branch, and both the trunk and each named branch has its own head. The trunk is usually meant to be the base of a project on which development progresses. If developers are working exclusively on the trunk, it always contains the latest 111:
version of the project, but therefore may also be the most unstable version. Another approach is to split a branch off the trunk, implement changes in that branch and merge the changes back into the trunk when the branch has proven to be stable and working. Depending on development mode and
222:
community, the notion of release is typically metaphorical, since anyone can usually check out any desired version, whether it be in the development branch or not. Often, the version that will eventually become the next
278:
branch "shadows" changes made in the upstream branch, to make it easier to maintain small changes (cvc is an open-source package building system incorporating a revision-control system for packages produced by
175:
personnel. Further, multiple releases on different operating system platforms may have to be maintained. Branches allow contributors to isolate changes without destabilizing the codebase, for example,
153:
changes back onto the parent branch. Often the changes are merged back to the trunk, even if this is not the parent branch. A branch not intended to be merged (e.g. because it has been
452: 171:
Branches allow for parts of software to be developed in parallel. Large projects require many roles to be filled, including developers, build managers, and
716: 518: 426: 49:). Each object can thereafter be modified separately and in parallel so that the objects become different. In this context the objects are called 749: 255: 231:
development branch. However, there is often more than one subsequent version of the software under development at a given time.
116:
policy the trunk may contain the most stable or the least stable or something-in-between version. Other terms for trunk include
1046: 852: 586: 511: 17: 954: 917: 755: 697: 504: 477: 38: 1053: 1039: 374: 157:
under an incompatible license by a third party, or it attempts to serve a different purpose) is usually called a
320: 785: 553: 1020: 328: 297: 1005: 808: 792: 159: 643: 621: 567: 172: 238:. Some revision control systems have specific jargon for the main development branch. For example, in 239: 180: 128: 1075: 976: 191: 146: 140: 113: 1010: 561: 397: 80:, especially if the branches are maintained by different organizations or individuals), or the 701: 691: 926: 779: 331:
and branches; in these systems, fetching a copy of a repository is equivalent to branching.
578: 211: 8: 911: 891: 730: 687: 301: 184: 453:"GitHub to replace master with main starting in October: What developers need to do now" 993: 709: 187: 536:
Years, where available, indicate the date of first stable release. Systems with names
859: 831: 661: 370: 362:
Software Configuration Management Patterns: Effective Teamwork, Practical Integration
219: 176: 773: 215: 108: 396:
Appleton, Brad; Berczuk, Stephen; Cabrera, Ralph; Orenstein, Robert (1998-02-08).
1000: 527: 95:
are branches that have a parent; a branch without a parent is referred to as the
34: 988: 743: 366: 46: 1069: 737: 723: 300:, the entire repository, with branches, may be copied and worked on further. 1025: 981: 767: 496: 340: 127:
though in some cases these are used with similar but distinct senses – see
933: 678: 154: 42: 879: 838: 313: 398:"Streamed Lines: Branching Patterns for Parallel Software Development" 971: 885: 824: 305: 1015: 872: 761: 592: 41:, is the duplication of an object under version control (such as a 360: 53:. The users of the version control system can branch any branch. 395: 251: 247: 845: 649: 324: 280: 267: 655: 605: 598: 540:
are no longer maintained or have planned end-of-life dates.
865: 402: 309: 243: 210:of a piece of software is a version that is under 145:Branching generally implies the ability to later 68:. The originating branch is sometimes called the 1067: 358: 286: 478:"Why GitHub renamed its master branch to main" 27:Duplication of an object under version control 512: 526: 166: 261: 519: 505: 129:version control § Common terminology 964: 359:Berczuk, Steve; Appleton, Brad (2003). 327:, there is no distinction made between 14: 1068: 475: 450: 424: 500: 234:Often, the development branch is the 197: 321:distributed revision control systems 291: 246:uses "master" by default, although 24: 242:, it is called the "MAIN" branch. 214:, and has not yet been officially 25: 1087: 431:Branch-Per-Feature Source Control 39:software configuration management 620: 256:after the murder of George Floyd 194:(resynchronized) after testing. 476:Heinze, Carolyn (2020-11-24). 469: 444: 418: 389: 352: 13: 1: 425:Bailey, Derick (2009-07-15). 346: 190:. These changes may be later 298:distributed revision control 287:Distributed revision control 7: 451:Wallen, Jack (2020-09-22). 334: 56:Branches are also known as 10: 1092: 235: 138: 134: 1034: 947: 901: 816: 807: 671: 636: 629: 618: 577: 552: 545: 534: 167:Motivations for branching 528:Version control software 262:Shadow or magic branches 141:Merge (revision control) 87: 756:Software Change Manager 18:Branching (software) 316:calls it "branch". 254:switched to "main" 227:version is called 204:development branch 198:Development branch 1063: 1062: 989:Delta compression 943: 942: 803: 802: 793:Visual SourceSafe 646:(1986, 1990 in C) 616: 615: 312:call it "clone"; 292:Repository clones 173:quality assurance 16:(Redirected from 1083: 920:(via Git) (2014) 914:(via Git) (2013) 817:Free/open-source 814: 813: 637:Free/open-source 634: 633: 624: 554:Free/open-source 550: 549: 521: 514: 507: 498: 497: 492: 491: 489: 488: 473: 467: 466: 464: 463: 448: 442: 441: 439: 438: 422: 416: 415: 413: 412: 406: 393: 387: 386: 384: 383: 356: 208:development tree 21: 1091: 1090: 1086: 1085: 1084: 1082: 1081: 1080: 1076:Version control 1066: 1065: 1064: 1059: 1030: 1001:File comparison 939: 897: 799: 667: 656:QVCS Enterprise 625: 612: 573: 541: 530: 525: 495: 486: 484: 474: 470: 461: 459: 449: 445: 436: 434: 423: 419: 410: 408: 400: 394: 390: 381: 379: 377: 357: 353: 349: 337: 294: 289: 264: 200: 169: 143: 137: 90: 74:upstream branch 35:version control 28: 23: 22: 15: 12: 11: 5: 1089: 1079: 1078: 1061: 1060: 1058: 1057: 1050: 1043: 1035: 1032: 1031: 1029: 1028: 1023: 1018: 1013: 1008: 1003: 998: 997: 996: 986: 985: 984: 974: 969: 968: 967: 957: 951: 949: 945: 944: 941: 940: 938: 937: 931: 923: 922: 921: 915: 905: 903: 899: 898: 896: 895: 889: 883: 877: 869: 863: 857: 849: 843: 835: 829: 820: 818: 811: 805: 804: 801: 800: 798: 797: 789: 783: 777: 771: 765: 759: 753: 747: 744:Perforce Helix 741: 735: 727: 721: 713: 707: 706: 705: 695: 682: 675: 673: 669: 668: 666: 665: 659: 653: 647: 640: 638: 631: 627: 626: 619: 617: 614: 613: 611: 610: 602: 596: 590: 583: 581: 575: 574: 572: 571: 565: 558: 556: 547: 543: 542: 535: 532: 531: 524: 523: 516: 509: 501: 494: 493: 468: 443: 417: 388: 375: 367:Addison-Wesley 350: 348: 345: 344: 343: 336: 333: 293: 290: 288: 285: 263: 260: 199: 196: 179:for bugs, new 168: 165: 139:Main article: 136: 133: 93:Child branches 89: 86: 82:backing stream 47:directory tree 26: 9: 6: 4: 3: 2: 1088: 1077: 1074: 1073: 1071: 1056: 1055: 1051: 1049: 1048: 1044: 1042: 1041: 1037: 1036: 1033: 1027: 1024: 1022: 1019: 1017: 1014: 1012: 1009: 1007: 1004: 1002: 999: 995: 992: 991: 990: 987: 983: 980: 979: 978: 975: 973: 970: 966: 963: 962: 961: 958: 956: 953: 952: 950: 946: 935: 932: 929: 928: 924: 919: 916: 913: 910: 909: 908:Azure DevOps 907: 906: 904: 900: 893: 890: 887: 884: 881: 878: 875: 874: 870: 867: 864: 861: 858: 855: 854: 850: 847: 844: 841: 840: 836: 833: 830: 827: 826: 822: 821: 819: 815: 812: 810: 806: 795: 794: 790: 787: 784: 781: 778: 775: 772: 769: 766: 763: 760: 757: 754: 751: 748: 745: 742: 739: 736: 733: 732: 728: 725: 724:Dimensions CM 722: 719: 718: 714: 711: 708: 703: 699: 696: 693: 689: 686: 685: 684:Azure DevOps 683: 680: 677: 676: 674: 670: 663: 660: 657: 654: 651: 648: 645: 642: 641: 639: 635: 632: 630:Client–server 628: 623: 608: 607: 603: 600: 597: 594: 591: 588: 587:The Librarian 585: 584: 582: 580: 576: 569: 566: 563: 560: 559: 557: 555: 551: 548: 544: 539: 533: 529: 522: 517: 515: 510: 508: 503: 502: 499: 483: 482:TheServerSide 479: 472: 458: 454: 447: 433:. Los techies 432: 428: 427:"Part 1: Why" 421: 404: 399: 392: 378: 372: 368: 364: 363: 355: 351: 342: 339: 338: 332: 330: 326: 322: 317: 315: 311: 307: 303: 299: 284: 282: 277: 273: 269: 259: 257: 253: 249: 245: 241: 237: 232: 230: 226: 221: 217: 213: 209: 205: 195: 193: 189: 186: 182: 178: 174: 164: 162: 161: 156: 152: 148: 142: 132: 130: 126: 122: 119: 115: 110: 106: 105: 100: 99: 94: 85: 83: 79: 75: 71: 70:parent branch 67: 63: 59: 54: 52: 48: 44: 40: 36: 32: 19: 1052: 1045: 1038: 959: 925: 871: 851: 837: 823: 791: 780:Team Concert 768:Surround SCM 729: 715: 604: 537: 485:. Retrieved 481: 471: 460:. Retrieved 457:TechRepublic 456: 446: 435:. Retrieved 430: 420: 409:. Retrieved 391: 380:. Retrieved 376:0-20174117-2 361: 354: 341:Revision tag 329:repositories 318: 295: 275: 271: 265: 233: 228: 224: 207: 203: 201: 170: 158: 150: 144: 124: 120: 117: 109:cutting-edge 103: 102: 97: 96: 92: 91: 81: 77: 73: 69: 65: 61: 57: 55: 50: 30: 29: 994:Interleaved 934:Plastic SCM 902:Proprietary 809:Distributed 679:AccuRev SCM 672:Proprietary 579:Proprietary 220:open source 212:development 188:integration 76:(or simply 43:source code 1047:Comparison 1021:Repository 880:GNU Bazaar 839:Code Co-op 662:Subversion 546:Local only 538:in italics 487:2022-04-24 462:2022-04-24 437:2009-08-12 411:2009-08-12 407:. Hillside 382:2007-05-24 347:References 323:, such as 155:relicensed 45:file or a 972:Changeset 886:Mercurial 825:BitKeeper 738:Integrity 710:ClearCase 308:(hg) and 306:Mercurial 218:. In the 151:integrate 121:mainline, 118:baseline, 66:codelines 31:Branching 1070:Category 1040:Category 1016:Monorepo 955:Baseline 948:Concepts 927:TeamWare 918:Services 892:Monotone 873:GNU arch 762:StarTeam 752:(1980s?) 704:) (2014) 698:Services 694:) (2005) 593:Panvalet 335:See also 319:In some 302:Monotone 216:released 185:versions 181:features 104:mainline 78:upstream 51:branches 774:Synergy 758:(1970s) 726:(1980s) 595:(1970s) 304:(mtn), 135:Merging 125:master, 101:or the 62:streams 977:Commit 960:Branch 936:(2006) 930:(1992) 912:Server 894:(2003) 888:(2005) 882:(2005) 876:(2001) 868:(2005) 862:(2007) 860:Fossil 856:(2002) 848:(2002) 842:(1997) 834:(2017) 832:Breezy 828:(2000) 796:(1994) 788:(2003) 782:(2008) 776:(1990) 770:(2002) 764:(1995) 746:(1995) 740:(2001) 734:(1984) 720:(1994) 712:(1992) 688:Server 681:(2002) 664:(2000) 658:(1998) 652:(1998) 609:(1991) 601:(1985) 589:(1969) 570:(1973) 564:(1982) 373:  314:Bazaar 272:shadow 252:GitLab 248:GitHub 192:merged 183:, and 114:commit 72:, the 1011:Merge 982:Gated 965:Trunk 846:Darcs 786:Vault 700:(via 690:(via 650:CVSNT 325:Darcs 281:rPath 276:magic 268:CVSNT 236:trunk 225:major 177:fixes 147:merge 98:trunk 88:Trunk 58:trees 33:, in 1054:List 1006:Fork 853:DCVS 750:SCLM 731:DSEE 717:CMVC 702:TFVC 692:TFVC 606:QVCS 599:PVCS 568:SCCS 371:ISBN 270:, a 250:and 160:fork 123:and 37:and 1026:Tag 866:Git 644:CVS 562:RCS 403:PDF 310:git 296:In 283:.) 274:or 266:In 258:. 244:Git 240:CVS 229:the 206:or 149:or 64:or 1072:: 480:. 455:. 429:. 369:. 365:. 202:A 163:. 84:. 60:, 520:e 513:t 506:v 490:. 465:. 440:. 414:. 405:) 401:( 385:. 20:)

Index

Branching (software)
version control
software configuration management
source code
directory tree
cutting-edge
commit
version control § Common terminology
Merge (revision control)
merge
relicensed
fork
quality assurance
fixes
features
versions
integration
merged
development
released
open source
trunk
CVS
Git
GitHub
GitLab
after the murder of George Floyd
CVSNT
rPath
distributed revision control

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