diff --git a/0001-heartwood.md b/0001-heartwood.md index 3a6ca74..5581cae 100644 --- a/0001-heartwood.md +++ b/0001-heartwood.md @@ -492,26 +492,26 @@ This allows for code to be staged for publishing even while offline, provided the user's storage is accessible. In most cases, it makes sense to keep storage and working copies on the same machine. - ┌─────────────────────────────────────┐ ┌───────────────────────────────────┐ - │ ┌────────────────────────┐ ┌──────┐ │ │ ┌──────┐ ┌──────────────────────┐ │ - │ │ Storage │ │ │ │ git │ │ │ │ Storage │ │ - │ │ ├─┤------├─┼─--------─┼─┤------├─┤ │ │ - │ │ ┌───────┐ ┌───────┐ ┌│ │ │ │ fetch │ │ │ │ ┌───────┐ ┌───────┐ │ │ - │ │ │Project│ │Project│ ││ │ │ │ │ │ │ │ │Project│ │Project│ │ │ - │ │ ├───────┤ ├───────┤ ├│ │ │ │ │ │ │ │ ├───────┤ ├───────┤ │ │ - │ └─┴────▲──┴──┴────┬──┴──┴┘ │ │ │ │ │ │ └─┴────┬──┴──┴────▲──┴─┘ │ - │ │ │ │ │ │ gossip │ │ │ │ │ │ - │ │ │ │ node ├─┼─--------─┼─┤ node │ │ │ │ - │ │ │ │ │ │ protocol │ │ │ │ │ │ - │ push pull │ │ │ │ │ │ pull push │ - │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ │ │ │ │ │ │ - │ ┌────┴───┐ ┌───▼────┐ │ │ │ │ │ │ ┌────▼───┐ ┌───┴────┐ │ - │ │Working │ │Working │ │ │ │ │ │ │ │Working │ │Working │ │ - │ │copy │ │copy │ │ │ │ │ │ │ │copy │ │copy │ │ - │ └────────┘ └────────┘ └──────┘ │ │ └──────┘ └────────┘ └────────┘ │ - └─────────────────────────────────────┘ └───────────────────────────────────┘ + ┌╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴┐ ┌╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴┐ + ┆ ┌───────────────────┐ ┌──────┐ ┆ ┆ ┌──────┐ ┌─────────────────┐ ┆ + ┆ │ Storage │ │ │ ┆ Git ┆ │ │ │ Storage │ ┆ + ┆ │ ├╸┆╸╸╸╸╸╸┆╸╸╸╸╸╸╸╸╸╸╸╸╸╸┆╸╸╸╸╸╸┆╸┤ │ ┆ + ┆ │ ┌──────┐ ┌─────┐ ┌│ │ │ ┆ protocol ┆ │ │ │ ┌─────┐ ┌─────┐ │ ┆ + ┆ │ │repo │ │repo │ ││ │ │ ┆ ┆ │ │ │ │repo │ │repo │ │ ┆ + ┆ │ ├──────┤ ├─────┤ ├│ │ │ ┆ ┆ │ │ │ ├─────┤ ├─────┤ │ ┆ + ┆ └─┴───╿──┴─┴───┬─┴─┴┘ │ │ ┆ ┆ │ │ └─┴───┬─┴─┴───╿─┴─┘ ┆ + ┆ │ │ │ │ ┆ gossip ┆ │ │ │ │ ┆ + ┆ │ │ │ Node ├╸╸╸╸╸╸╸╸╸╸╸╸╸╸┤ Node │ │ │ ┆ + ┆ │ │ │ │ ┆ protocol ┆ │ │ │ │ ┆ + ┆ push pull │ │ ┆ ┆ │ │ pull push ┆ + ┆ │ │ │ │ ┆ ┆ │ │ │ │ ┆ + ┆ │ │ │ │ ┆ ┆ │ │ │ │ ┆ + ┆ │ │ │ │ ┆ ┆ │ │ │ │ ┆ + ┆ ┌────┴───┐ ┌──╽─────┐│ │ ┆ ┆ │ │ ┌─────╽──┐ ┌──┴────┐┆ + ┆ │working │ │working ││ │ ┆ ┆ │ │ │working │ │working│┆ + ┆ │copy │ │copy ││ │ ┆ ┆ │ │ │copy │ │copy │┆ + ┆ └────────┘ └────────┘└──────┘ ┆ ┆ └──────┘ └────────┘ └───────┘┆ + └╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴┘ └╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴┘ Splitting the storage into per-project repositories has numerous advantages over previous designs that used a "monorepo":