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
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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)!