| |
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":
|