105 lines
3.2 KiB
Markdown
105 lines
3.2 KiB
Markdown
# Порядок действий при изменении кода
|
|
|
|
**Читать перед ЛЮБОЙ правкой.**
|
|
|
|
---
|
|
|
|
## ⛔ ЗАПРЕЩЕНО
|
|
|
|
1. Менять код без «делай»
|
|
2. Действовать по догадкам («я бы сделал так», «можно попробовать»)
|
|
3. Удалять файлы/папки без разрешения
|
|
4. «Улучшать» рабочий код без прямого разрешения
|
|
5. Использовать `sed`
|
|
6. Откладывать commit/push «на потом»
|
|
7. Игнорировать проверку синтаксиса перед push
|
|
|
|
---
|
|
|
|
## ✅ ПОРЯДОК ПРИ ЛЮБОМ ИЗМЕНЕНИИ
|
|
|
|
### Шаг 1 — План
|
|
```
|
|
Описать что меняем → получить «делай»
|
|
```
|
|
|
|
### Шаг 2 — Правка
|
|
Вносим изменения. Только то, что обговорено. Никакой самодеятельности.
|
|
|
|
### Шаг 3 — Проверка синтаксиса
|
|
```bash
|
|
python3 -c "import py_compile; py_compile.compile('путь/к/файлу.py', doraise=True)"
|
|
```
|
|
**КАЖДЫЙ изменённый .py файл.**
|
|
|
|
### Шаг 4 — Проверка импорта
|
|
```bash
|
|
cd /home/naeel/nubes/drhider && python3 -c "from drhider import obfuscate_files, LLMClient; print('OK')"
|
|
```
|
|
|
|
### Шаг 5 — Проверить соседей
|
|
После `replace_string_in_file` — прочитать соседние строки, убедиться что не затёр соседнюю функцию/класс.
|
|
|
|
### Шаг 6 — commit + push (СРАЗУ)
|
|
```bash
|
|
cd /home/naeel/nubes/drhider
|
|
git add -A
|
|
git commit -m "подробное описание что и зачем"
|
|
git push
|
|
```
|
|
**Без исключений. Никаких накоплений.**
|
|
|
|
### Шаг 7 — Документировать
|
|
Записать в `History/` что сделано:
|
|
- Отдельный `.md` файл
|
|
- Что планировалось → что сделано → в чём ошибся
|
|
|
|
### Шаг 8 — Redeploy
|
|
Зайти в UI Штурвала → Redeploy `drhider`.
|
|
|
|
---
|
|
|
|
## 🔧 Команды в терминале — всегда с таймаутами
|
|
|
|
```bash
|
|
curl --max-time 30 ...
|
|
ssh -o ConnectTimeout=10 ...
|
|
timeout 10 grep ... file.txt
|
|
```
|
|
|
|
---
|
|
|
|
## 📦 Проверка ВСЕХ файлов разом
|
|
|
|
```bash
|
|
cd /home/naeel/nubes/drhider
|
|
python3 -c "
|
|
import py_compile, os
|
|
for root, dirs, files in os.walk('.'):
|
|
for f in files:
|
|
if f.endswith('.py'):
|
|
py_compile.compile(os.path.join(root, f), doraise=True)
|
|
print(f'OK: {os.path.join(root, f)}')
|
|
"
|
|
```
|
|
|
|
---
|
|
|
|
## 🏷️ Версионирование
|
|
|
|
Версия в `site/app.py` (переменная `VERSION`).
|
|
Менять при любом изменении кода, влияющем на поведение.
|
|
|
|
---
|
|
|
|
## 📝 Пример хорошего коммита
|
|
|
|
```
|
|
git commit -m "generators: добавил generate_snils — генератор фиктивных СНИЛС
|
|
|
|
- Новый файл drhider/generators/snils.py
|
|
- Добавлен паттерн в config.py → ENTITY_PATTERNS
|
|
- Добавлен в generators/__init__.py → ENTITY_GENERATORS
|
|
- bump VERSION 2.0.0 → 2.0.1"
|
|
```
|