You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docs/uk/malachite/common-features.mdx

132 lines
6.9 KiB
Plaintext

---
title: Основні можливості
---
Як `[mode]`, спільний між е-м… сховищами… чи щось подібне.
## Що потрібно знати
Malachite досить конкретизований у режимі Сховища, і не дуже в режимі Робочого простору.
Звісно, це не тому, що я ледачий і ненавиджу режим Робочого простору чи щось інше, просто нема чого _додавати_.
Без зайвих слів, давайте подивимося на цей приклад конфігураційного файлу.
```toml
# mlc.toml
[base]
mode = "workspace"
smart_pull = true
[mode.workspace]
git_info = true
colorblind = true
[repositories]
repos = [
"foo:repo1:2",
"foo:repo2/testing",
"bar:baz!",
"bar:qux/testing!:1",
]
[repositories.urls]
foo = "https://example.org/{}.git"
bar = "https://example.org/other/{}.git"
```
Спочатку це буде виглядати дуже заплутаним, але потерпіть мене.
У цьому документі ми розглянемо лише те, що потрібно знати для **обох** режимів.
Посилання на додаткові спеціалізовані посібники для кожного режиму розташовано внизу цієї сторінки.
Почнемо з `[base]`.
## Базова конфігурація
Базова конфігурація визначає кілька загальних параметрів для всіх режимів Malachite.
```toml
[base]
mode = "workspace"
smart_pull = true
```
У цьому фрагменті ми визначаємо `mode` як `"workspace"`.
`base.mode` у Malachite може бути лише одним із `"workspace"` або `"repository``, і визначає, барабанний дріб…
Режим, в якому він працює. Якщо для нього встановлено будь-який режим, окрім цих 2 режимів, він аварійно завершує роботу.
У цьому фрагменті також визначено `smart_pull`, який контролює, чи слід виконувати команду pull… розумно.
Насправді це означає, що замість того, щоб просто виконувати простий `git pull` у кожному сховищі, Malachite
буде:
- Спочатку запустить `git remote update`, щоб отримати нові віддалені сховища з джерела
- Потім запустить `git status` і проаналізує вивід, щоб побачити, чи поточна гілка відстала
- Якщо поточна гілка відстає, вона запускає звичайний `git pull`, який використовує переваги віддаленого керування,
яке вже оновлюється.
Теоретично, це прискорює роботу лише на хвилину (справді, подумайте, мілісекунди). Проте, де ця функція сяє, так у режимі сховища,
де він активує корисні функції автоматизації, такі як `build_on_update`.
Незважаючи на це, рекомендовано залишати його ввімкненим для невеликого прискорення та вимикати, лише якщо це спричиняє проблеми.
У мене особисто ніколи з цим не було проблем у минулому, але хто знає, що може статися. Це ж Git, про який ми говоримо.
### Конфігурація сховища
Конфігурація сховищ це те, що дійсно змушує Malachite збивати сховища внутрішньо.
Уся мета у тому, що він робить, і тому ми спробували придумати акуратну маленьку систему, яка допоможе
полегшити багато пакетів без необхідності вводити кожну URL-адресу мільйон разів.
```toml
[repositories]
repos = [
"foo:repo1:2",
"foo:repo2/testing",
"bar:baz!",
"bar:qux/testing!:1",
]
[repositories.urls]
foo = "https://example.org/{}.git"
bar = "https://example.org/other/{}.git"
```
Працює це дуже просто:
- Ми маємо 2 URL-адреси в ключі `repositories.urls`.
- Кожний `repo` в ключі `repositories.repos` має префікс ідентифікатора.
- Якщо числом є `foo`, буде вставлено URL-адресу з ідентифікатором `foo`.
- Зокрема, в URL-адресу замість підрядка `%repo%` буде вставлено визначене ім’я `repo`.
### Почекайте, які спеціальні символи????
Я радий, що ви запитали!
- Якщо ви хочете скопіювати певну гілку, просто використовуйте роздільник `/`. Щоб скопіювати сховище `foo` у гілці `bar`, використовуйте `id:foo/bar`.
- Якщо ви хочете, щоб певний пакет збирався першим, використовуйте екземпляри `!`, щоб установити пріоритет. Це пояснюється пізніше на сторінці [Режим сховища](repository-mode).
Останній роздільник `:` є необов'язковим і поводиться по-різному залежно від режиму:
- У режимі сховища він визначає бажаний хеш/ревізію/тег для перевірки на клоні сховища
- У режимі робочого простору він визначає бажану глибину для клонування сховища, що корисно для великих сховищ git, таких як `nixpkgs`.
Це буквально все!
## Спеціальна конфігурація режиму
Щоб отримати спеціальну конфігурацію режиму, подивіться наступні посилання!
- [Режим робочого простору](workspace-mode)
- [Режим сховища](repository-mode)
## Examples
Приклади функціональної конфігурації для обох режимів доступні в каталозі [examples](https://github.com/crystal-linux/malachite/tree/main/examples)!
## Використання
Крім того, ви можете переглянути довідник з [Використання](detailed-usage)!