---
type: JS Module
title: lock-cache-dir.mjs
resource: npm/scripts/utils/lock-cache-dir.mjs
docgen:
  crc: fd0d0041
---

Цей файл визначає структуру каталогу кешування блоків для git-worktree, забезпечуючи унікальний стан локу для кожного головного checkout та пов'язаних worktree. Він використовується для серіалізації запуску інструментів аналізу коду в різних worktree, запобігаючи конфліктам та забезпечуючи ефективну роботу. Створена структура кешування гарантує, що всі worktree мають доступ до одного і того ж стану локу, що необхідно для коректної серіалізації процесів аналізу.

## Поведінка

1.  Визначається ключ локу, що представляє конкретну задачу або конфігурацію.
2.  Визначається робоча директорія, яка використовується для виконання операцій.
3.  Використовується команда `git rev-parse --git-common-dir` для визначення спільного каталогу `.git`. Якщо команда успішна, отримується абсолютний шлях до каталогу `.git`. Якщо команда не вдалася, то цей шлях не визначено.
4.  Якщо спільний каталог `.git` визначено, то обчислюється шлях до директорії стану локу, використовуючи спільний каталог, назву ключа та префікс `n-rules`.
5.  Якщо спільний каталог `.git` не визначено, то обчислюється шлях до директорії стану локу, використовуючи робочу директорію та префікс `node_modules/.cache/n-rules`.
6.  Повертається обчислений абсолютний шлях до директорії стану локу.

## Гарантії поведінки

- Спільний лок-стан для всіх git-worktree визначається шляхом `<git-common-dir>/n-rules/<key>`.
- Якщо git недоступний, використовується кеш `node_modules/.cache/n-rules/<key>`.
- Кеш використовується для збереження стану протягом одного прогону.
- Стан локу (`lock/owner.json`, `result.json`) є унікальним для кожного головного checkout та всіх linked-worktree.
- Унікальний стан локу запобігає паралельній роботі інструментів серіалізації.
- Унікальний стан локу гарантує, що кожен worktree має власний `node_modules/.cache/`.
- Кеш не відстежується git.
- Кеш не впливає на стан локу.
