• lemmyvore@feddit.nl
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    11 months ago

    My graph theory is a bit fuzzy but I think that the definition of a branch in a directed graph corresponds to the path between two nodes/vertices.

    No, it’s a subtree of a DAG (directed acyclic graph). The technical term is arborescence but people who can’t spell it say branch instead.

    Technically it should have at least 2 children to be called a branch, and it can’t connect back to the graph or it’s not a subtree anymore. So it fits what most people intuitively think a (real) tree branch should look like.

    I don’t think Git invented this concept, nor did any other version control system.

    They didn’t, but Git went too far by calling any node with a label a “branch” regardless if it’s in the middle of the DAG. It doesn’t fit graph theory and it doesn’t fit the intuitive image either.

    Edit: Also, most of the source control systems that preceded Git were very rudimentary, they branch merging was either deficient or non-existent so most of them only used subtrees which never tied back to trunk. So for them “branch” was appropriate most of the time.