┌────────────────────┐ ┌───▶│ gix-pack │◀┐ │ └────────────────────┘ │ │ │ write output bundle │ │ │ │ │ │ │ │ │ │ │ │ │ ╔════════════════════╗ ╔════════════════════╗ ║ write-pack ║ ║ generate-pack ║ ╚════════════════════╝ ╚════════════════════╝ ▲ ▲ │ │ ╔════════════════════╗ │ │ ┌─────────────────────────────────────────────────────────▶║ Submodules ║ │ │ │ ╚════════════════════╝ │ │ │ ▲ ╔════════════════════╗ ╔════════════════════╗ │ │ ║ Fetch Changes ║◀──┬─▶║ Push Changes ║ │ │ ╚════════════════════╝ │ ╚════════════════════╝ │ │ ▲ │ ▲ │ ╔═══════════════════╗ ╔══════════════╗ │ │ │ │ │ ║gix-worktree-state ║ ║ gix-status ║ │ │ │ │ │ ╚═══════════════════╝ ╚══════════════╝ │ │ │ │ │ ▲ ▲ │ ┌────────────────────┐ ╔════════════════════╗ │ │ │ │ │ │ │ │ imara-diff │────────▶║ Blob-Diff ║ │ │ │ │ │ │ │ └────────────────────┘ ╚════════════════════╝ │ └─────────────┼────────────────────────┐ │ │ │ │ ▲ │ │ │ │ │ │ │ │ └──────────────┬────────────┘ │ │ └─────────────────────┬──────────────────┘ └───────────────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ │ │ │ │ ╔════════════════════╗ ╔══════════════════╗ │ │ ╔═══════════════╗ │ │ │ │ ║ Describe ║ ║ Traverse Commits ║ │ │ ║ Tree-Diff ║ │ │ │ │ ╚════════════════════╝ ╚══════════════════╝ │ │ ╚═══════════════╝ │ │ │ │ ▲ ▲ │ │ ▲ │ │ ╔════════════════════╗ ╔════════════════╗ ╔═══════════════════╗ │ │ │ │ │ │ │ ║ gix-archive ║ ║ gix-submodule ║ ┌───────▶║ gix-worktree ║◀──────────┐ │ │ │ │ │ │ │ ╚════════════════════╝ ╚════════════════╝ │ ╚═══════════════════╝ │ │ │ │ │ │ │ │ ▲ ▲ │ ▲ │ ├──────────────────────┼──────────────┼────┴────────────┤ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔════════════════════╗ │ ╔═══════════════════╗ │ │ │ │ │ │ │ ┌────────────────────┼──▶║ Repository ║───────┼────────▶║ Remote ║ │ │ │ │ │ │ │ │ │ ╚════════════════════╝ │ ╚═══════════════════╝ │ ╔═══════════════════════════╗ ╔════════════════╗ │ │ ╔═══════════════════╗ ╔═══════════════════╗ │ │ │ ▲ │ ▲ │ ║ gix-worktree-stream ║ ║ gix-pathspec ║◀─┐ │ ┌────────┴──────┐ ║ gix-index ║ ║ gix-revision ║──┘ │ │ │ ╔═══════════════════╗ │ │ ╚═══════════════════════════╝ ╚════════════════╝ │ │ │ │ ╚═══════════════════╝ ╚═══════════════════╝ │ └──────────────┼───────║ gix-traverse ║ │ │ ▲ ▲ │ │ │ │ │ │ ╚═══════════════════╝ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────┼───────────────────────┐ │ │ │ │ │ │ │ │ │ │ │ │ ├────────────┐ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔════════════════╗ │ │ ╔════════════╗ ╔════════════╗ │ │ │ │ │ │ │ └────────────────────────║ gix-attributes ║──┼─────┴─▶║ gix-filter ║ ║ gix-ignore ║ │ ╔═══════════════════╗ ╔════════════╗ ╔═════════════════════╗ │ │ ╔════════════════════╗ ╚════════════════╝ │ ╚════════════╝ ╚════════════╝ │ ║ Object Storage ║ ║ References ║ ║ Configuration ║ │ ╔═══════════════════╗ ║ gix-protocol ║ ▲ │ ▲ │ ║ (gix-odb) ║ ║ (gix-ref) ║ ║ (gix-config) ║ │ ║ gix-credentials ║ ╚════════════════════╝ │ │ │ │ ╚═══════════════════╝ ╚════════════╝ ╚═════════════════════╝ │ ╚═══════════════════╝ ▲ │ │ │ │ ▲ ▲ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔═══════════════════╗ ╔════════════════════╗ │ │ │ │ └───────────────────────┤ ║ gix-refspec ║ ║ gix-transport ║ │ │ │ │ │ ╚═══════════════════╝ ╚════════════════════╝ ╔═════════════╗ │ │ ╔═══════════════════╗ │ │ ▲ ║ gix-glob ║───┴───────────────────────────────┘ ║ gix-mailmap ║ │ │ │ ╚═════════════╝ ╚═══════════════════╝ │ │ ┌──────────────────────┼────────────────────────┐ │ │ │ │ │ ╔═════════════════════════╗ ╔══════════════════════════════╗ │ │ │ ║ Repository Discovery ║ ║ Temp and Lockfiles ║ ╔═════════════════╗ ╔═══════════════════════╗ ╔════════════════════╗ ║ (gix-discover) ║ ║ (gix-tempfile & gix-lock) ║ ║ Ssh Transport ║ ║ Git Local Transport ║ ║ Https-Transport ║ ╚═════════════════════════╝ ╚══════════════════════════════╝ ╚═════════════════╝ ╚═══════════════════════╝ ╚════════════════════╝ ┌───────────────────────────────────────────────────────────┐ ┌──────────────────────────────────────────────────────────┐ ┌──────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────────────────┐│ │ │ │ │ │ │ ││ _ _ _ │ │ _ _ _ _ │ │ _ _ _ │ │ _ __ _ ││ (_) | | | | │ │ (_) | | (_) | | │ │ (_) | | | | │ │ (_) / _| | | ││ __ _ ___ ________ _ __ __ _| |_| |__ │ │ __ _ ___ ________ ___ | |__ _ ___ ___| |_ │ │ __ _ ___ ________| |__ __ _ ___| |__ │ │ __ _ ___ ________| |_ ___ __ _| |_ _ _ _ __ ___ ___ ││ / _` | \ \/ /______| '_ \ / _` | __| '_ \ │ │ / _` | \ \/ /______/ _ \| '_ \| |/ _ \/ __| __| │ │ / _` | \ \/ /______| '_ \ / _` / __| '_ \ │ │ / _` | \ \/ /______| _/ _ \/ _` | __| | | | '__/ _ \/ __| ││ | (_| | |> < | |_) | (_| | |_| | | | │ │ | (_| | |> < | (_) | |_) | | __/ (__| |_ │ │ | (_| | |> < | | | | (_| \__ \ | | | │ │ | (_| | |> < | || __/ (_| | |_| |_| | | | __/\__ \ ││ \__, |_/_/\_\ | .__/ \__,_|\__|_| |_| │ │ \__, |_/_/\_\ \___/|_.__/| |\___|\___|\__| │ │ \__, |_/_/\_\ |_| |_|\__,_|___/_| |_| │ │ \__, |_/_/\_\ |_| \___|\__,_|\__|\__,_|_| \___||___/ ││ __/ | | | │ │ __/ | _/ | │ │ __/ | │ │ __/ | ││ |___/ |_| │ │ |___/ |__/ │ │ |___/ │ │ |___/ ││ │ │ │ │ │ │ │└───────────────────────────────────────────────────────────┘ └──────────────────────────────────────────────────────────┘ └──────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ │ │ _ _ _ _ _ │ │ (_) | | | | | (_) │ │ __ _ ___ ________ _ __ __ _ ___| | _____| |_| |_ _ __ ___ │ │ / _` | \ \/ /______| '_ \ / _` |/ __| |/ / _ \ __| | | '_ \ / _ \ │ │ | (_| | |> < | |_) | (_| | (__| < __/ |_| | | | | | __/ │ │ \__, |_/_/\_\ | .__/ \__,_|\___|_|\_\___|\__|_|_|_| |_|\___| │ │ __/ | | | │ │ |___/ |_| │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ┌────────────────────┐
┌───▶│ gix-pack │◀┐
│ └────────────────────┘ │
│ │
write output
bundle │
│ │
│ │
│ │
│ │
│ │
│ │
╔════════════════════╗ ╔════════════════════╗
║ write-pack ║ ║ generate-pack ║
╚════════════════════╝ ╚════════════════════╝
▲ ▲
│ │
╔════════════════════╗ │ │
┌─────────────────────────────────────────────────────────▶║ Submodules ║ │ │
│ ╚════════════════════╝ │ │
│ ▲ ╔════════════════════╗ ╔════════════════════╗
│ │ ║ Fetch Changes ║◀──┬─▶║ Push Changes ║
│ │ ╚════════════════════╝ │ ╚════════════════════╝
│ │ ▲ │ ▲
│ ╔═══════════════════╗ ╔══════════════╗ │ │ │ │
│ ║gix-worktree-state ║ ║ gix-status ║ │ │ │ │
│ ╚═══════════════════╝ ╚══════════════╝ │ │ │ │
│ ▲ ▲ │ ┌────────────────────┐ ╔════════════════════╗ │ │ │
│ │ │ │ │ imara-diff │────────▶║ Blob-Diff ║ │ │ │
│ │ │ │ └────────────────────┘ ╚════════════════════╝ │ └─────────────┼────────────────────────┐
│ │ │ │ ▲ │ │ │
│ │ │ │ │ └──────────────┬────────────┘ │
│ └─────────────────────┬──────────────────┘ └───────────────────────────────────────────────────────────────┐ │ │ │
│ │ │ │ │ │
│ │ ╔════════════════════╗ ╔══════════════════╗ │ │ ╔═══════════════╗ │ │
│ │ ║ Describe ║ ║ Traverse Commits ║ │ │ ║ Tree-Diff ║ │ │
│ │ ╚════════════════════╝ ╚══════════════════╝ │ │ ╚═══════════════╝ │ │
│ │ ▲ ▲ │ │ ▲ │ │
╔════════════════════╗ ╔════════════════╗ ╔═══════════════════╗ │ │ │ │ │ │ │
║ gix-archive ║ ║ gix-submodule ║ ┌───────▶║ gix-worktree ║◀──────────┐ │ │ │ │ │ │ │
╚════════════════════╝ ╚════════════════╝ │ ╚═══════════════════╝ │ │ │ │ │ │ │ │
▲ ▲ │ ▲ │ ├──────────────────────┼──────────────┼────┴────────────┤ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ ╔════════════════════╗ │ ╔═══════════════════╗ │
│ │ │ │ │ │ ┌────────────────────┼──▶║ Repository ║───────┼────────▶║ Remote ║ │
│ │ │ │ │ │ │ │ ╚════════════════════╝ │ ╚═══════════════════╝ │
╔═══════════════════════════╗ ╔════════════════╗ │ │ ╔═══════════════════╗ ╔═══════════════════╗ │ │ │ ▲ │ ▲ │
║ gix-worktree-stream ║ ║ gix-pathspec ║◀─┐ │ ┌────────┴──────┐ ║ gix-index ║ ║ gix-revision ║──┘ │ │ │ ╔═══════════════════╗ │ │
╚═══════════════════════════╝ ╚════════════════╝ │ │ │ │ ╚═══════════════════╝ ╚═══════════════════╝ │ └──────────────┼───────║ gix-traverse ║ │ │
▲ ▲ │ │ │ │ │ │ ╚═══════════════════╝ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ ┌───────────────────────┼───────────────────────┐ │ │
│ │ │ │ │ │ │ │ │ │ ├────────────┐ │
│ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │
│ ╔════════════════╗ │ │ ╔════════════╗ ╔════════════╗ │ │ │ │ │ │ │
└────────────────────────║ gix-attributes ║──┼─────┴─▶║ gix-filter ║ ║ gix-ignore ║ │ ╔═══════════════════╗ ╔════════════╗ ╔═════════════════════╗ │ │ ╔════════════════════╗
╚════════════════╝ │ ╚════════════╝ ╚════════════╝ │ ║ Object Storage ║ ║ References ║ ║ Configuration ║ │ ╔═══════════════════╗ ║ gix-protocol ║
▲ │ ▲ │ ║ (gix-odb) ║ ║ (gix-ref) ║ ║ (gix-config) ║ │ ║ gix-credentials ║ ╚════════════════════╝
│ │ │ │ ╚═══════════════════╝ ╚════════════╝ ╚═════════════════════╝ │ ╚═══════════════════╝ ▲
│ │ │ │ ▲ ▲ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ ╔═══════════════════╗ ╔════════════════════╗
│ │ │ │ └───────────────────────┤ ║ gix-refspec ║ ║ gix-transport ║
│ │ │ │ │ ╚═══════════════════╝ ╚════════════════════╝
╔═════════════╗ │ │ ╔═══════════════════╗ │ │ ▲
║ gix-glob ║───┴───────────────────────────────┘ ║ gix-mailmap ║ │ │ │
╚═════════════╝ ╚═══════════════════╝ │ │ ┌──────────────────────┼────────────────────────┐
│ │ │ │ │
╔═════════════════════════╗ ╔══════════════════════════════╗ │ │ │
║ Repository Discovery ║ ║ Temp and Lockfiles ║ ╔═════════════════╗ ╔═══════════════════════╗ ╔════════════════════╗
║ (gix-discover) ║ ║ (gix-tempfile & gix-lock) ║ ║ Ssh Transport ║ ║ Git Local Transport ║ ║ Https-Transport ║
╚═════════════════════════╝ ╚══════════════════════════════╝ ╚═════════════════╝ ╚═══════════════════════╝ ╚════════════════════╝
┌───────────────────────────────────────────────────────────┐ ┌──────────────────────────────────────────────────────────┐ ┌──────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────────────────┐
│ │ │ │ │ │ │ │
│ _ _ _ │ │ _ _ _ _ │ │ _ _ _ │ │ _ __ _ │
│ (_) | | | | │ │ (_) | | (_) | | │ │ (_) | | | | │ │ (_) / _| | | │
│ __ _ ___ ________ _ __ __ _| |_| |__ │ │ __ _ ___ ________ ___ | |__ _ ___ ___| |_ │ │ __ _ ___ ________| |__ __ _ ___| |__ │ │ __ _ ___ ________| |_ ___ __ _| |_ _ _ _ __ ___ ___ │
│ / _` | \ \/ /______| '_ \ / _` | __| '_ \ │ │ / _` | \ \/ /______/ _ \| '_ \| |/ _ \/ __| __| │ │ / _` | \ \/ /______| '_ \ / _` / __| '_ \ │ │ / _` | \ \/ /______| _/ _ \/ _` | __| | | | '__/ _ \/ __| │
│ | (_| | |> < | |_) | (_| | |_| | | | │ │ | (_| | |> < | (_) | |_) | | __/ (__| |_ │ │ | (_| | |> < | | | | (_| \__ \ | | | │ │ | (_| | |> < | || __/ (_| | |_| |_| | | | __/\__ \ │
│ \__, |_/_/\_\ | .__/ \__,_|\__|_| |_| │ │ \__, |_/_/\_\ \___/|_.__/| |\___|\___|\__| │ │ \__, |_/_/\_\ |_| |_|\__,_|___/_| |_| │ │ \__, |_/_/\_\ |_| \___|\__,_|\__|\__,_|_| \___||___/ │
│ __/ | | | │ │ __/ | _/ | │ │ __/ | │ │ __/ | │
│ |___/ |_| │ │ |___/ |__/ │ │ |___/ │ │ |___/ │
│ │ │ │ │ │ │ │
└───────────────────────────────────────────────────────────┘ └──────────────────────────────────────────────────────────┘ └──────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ _ _ _ _ _ │
│ (_) | | | | | (_) │
│ __ _ ___ ________ _ __ __ _ ___| | _____| |_| |_ _ __ ___ │
│ / _` | \ \/ /______| '_ \ / _` |/ __| |/ / _ \ __| | | '_ \ / _ \ │
│ | (_| | |> < | |_) | (_| | (__| < __/ |_| | | | | | __/ │
│ \__, |_/_/\_\ | .__/ \__,_|\___|_|\_\___|\__|_|_|_| |_|\___| │
│ __/ | | | │
│ |___/ |_| │
│ │
└─────────────────────────────────────────────────────────────────────────────┘