Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation


⏪ dev-replay

Локальная машина времени для твоего кода. Без гита, без боли, на лету.

Представь, что у твоего редактора кода появился видеорегистратор (или черный ящик). Ты просто запускаешь его в фоне и идешь кодить. Он тихо пишет каждое твое сохранение файла. Если ты случайно сломал проект, стер нужный кусок кода или ушел не в ту степь — ты просто вводишь время, когда «всё работало», и получаешь срез своего кода из прошлого в отдельной папочке.


🤬 Проблемы, от которых спасает этот софт

  • «Блин, 5 минут назад же работало!» — классика. Ты написал код, он выдал нужный результат. Ты решил его «чуть-чуть причесать и улучшить». Всё ломается к чертям, ты судорожно жмешь Ctrl+Z, но лимит отмены в редакторе внезапно кончился. Или ты случайно закрыл вкладку в VS Code, и история редактора просто стерлась. dev-replay помнит всё.
  • «Да я только одну строчку поменял, почему всё упало?!» Знакомая ситуация, когда проект перестает собираться из-за какой-то мелкой опечатки, а ты в упор не видишь, где косяк, и сидишь перебираешь файлы вручную. Пишешь dev history и сразу видишь точный лог всех своих изменений по секундам.
  • Мусорная история в гите. Чтобы не потерять рабочий кусок кода перед сомнительным экспериментом, приходится делать коммиты вроде wip, test, asdasd, fix2. С этой тулзой про этот стыд можно забыть: экспериментируй как хочешь, код бэкапится сам при каждом нажатии Ctrl+S, а гит-лог остается девственно чистым.
  • Страх стереть то, что есть. Обычные откаты изменений часто затирают текущие файлы. Здесь всё безопасно: когда ты вызываешь машину времени, она не трогает твой текущий (пусть и сломанный) код, а аккуратно собирает рабочую копию из прошлого в изолированную папку time_machine. Ты вообще ничем не рискуешь.

🛠 Как установить (занимает 1 минуту)

Для работы нужен только Python 3.

1. Скачиваем тулзу к себе на комп: Желательно положить её куда-нибудь в домашнюю директорию, чтобы она всегда была под рукой.

cd ~
git https://github.com/marpelskiy/devReplay
cd dev-replay

2. Настраиваем окружение (рекомендуется): Чтобы не засорять систему, создадим локальное виртуальное окружение и поставим туда watchdog (библиотека, которая следит за файлами).

python3 -m venv venv
source venv/bin/activate
pip install watchdog

3. Создаем глобальную команду dev: Чтобы ты мог вызывать магию из любой папки любого проекта, добавим алиас в твой терминал. Открой конфиг терминала (например, ~/.zshrc, ~/.bashrc или ~/.config/fish/config.fish) и в самый низ добавь эту строку:

alias dev='python ~/dev-replay/start.py'

Не забудь перезапустить терминал (или прописать source ~/.zshrc).


📖 Подробный гайд: Как юзать?

У тебя есть всего 3 команды. Работать с ними нужно находясь внутри папки твоего проекта (того, который ты сейчас кодишь).

Шаг 1: Включаем запись

Открываешь терминал в папке проекта и пишешь:

dev log

Скрипт спросит путь, просто нажми Enter (он сам поймет, что ты уже в нужной папке). Всё, можешь сворачивать этот терминал. Инструмент будет висеть в фоне и логировать каждый раз, когда ты сохраняешь файлы (.py, .js, .html и т.д.). Системные папки типа .git или node_modules он игнорирует, так что комп тормозить не будет.

Шаг 2: Смотрим, что натворили

Допустим, код сломался. Ты хочешь понять, что делал последние полчаса. Открываешь новую вкладку терминала и пишешь:

dev history

Ты увидишь примерно это:

последние 15 действий:
[20:12:05] api.py -> добавил: 'def fetch_data():' (строка 10)
[20:15:22] config.json -> удалил: '"debug": true' (строка 4)
[20:18:40] main.py -> добавил: 'print("test")' (строка 42)

Сразу становится понятно, когда всё пошло не так.

Шаг 3: Перематываем время ⏪

Ты понял, что в 20:15 проект еще жил. Воскрешаем его:

dev replay
  • Скрипт снова спросит путь — жмем Enter.
  • Спросит время — вводим 20:15 (или с секундами 20:15:22).

Что произойдет? В корне твоего проекта появится скрытая папка .dev-replay/time_machine/. Внутри неё будет лежать точная копия твоего проекта (только те файлы, которые ты менял), ровно в том виде, в котором они были в 20:15. Берешь оттуда нужный кусок кода, вставляешь в свой сломанный файл — и идешь пить кофе.


⚙️ Под капотом (и пара важных правил)

  1. Где хранятся логи? Внутри твоего проекта создается скрытая папка .dev-replay. В ней лежит файл log.jsonl.
  2. Как не слить логи на GitHub? ОБЯЗАТЕЛЬНО добавь папку .dev-replay/ в .gitignore твоего проекта, чтобы случайно не запушить всю эту историю изменений в публичный репозиторий.
  3. Очистка. Если проект долгий, лог-файл может разрастись. Если история тебе больше не нужна, просто удали папку .dev-replay ручками, и при следующем запуске dev log всё начнется с чистого листа.

📂 Как это устроено (Структура папок)

Инструмент вообще не мешает твоему проекту и аккуратно раскладывает всё по полочкам. Вот как это выглядит изнутри:

твой_проект/
├── src/
├── main.py
├── ...
└── .dev-replay/                 # ← Скрытая папка, создается сама при «dev log»
    ├── log.jsonl                # ← Твой «черный ящик». Сюда летят диффы и слепки кода
    └── time_machine/            # ← Появляется только после команды «dev replay»
        ├── src/                 
        └── main.py              # ← Твой чистый и рабочий код из прошлого

  • .dev-replay/ — техническая папка утилиты. Она скрыта по умолчанию, чтобы не мозолить глаза в боковой панели VS Code или в терминале.
  • log.jsonl — файл, куда дописываются JSON-строки при каждом нажатии Ctrl+S. Формат .jsonl выбран не просто так: он позволяет дописывать данные мгновенно, не перечитывая весь файл целиком, так что диск не напрягается.
  • time_machine/ — изолированный буфер. Сюда скрипт вытаскивает файлы на нужную тебе минуту. Ты можешь просто скопировать отсюда старый код, либо открыть эту папку рядом в редакторе, чтобы сравнить изменения.

Сделано для того, чтобы сберечь нервы разработчиков. ☕️

About

Легковесный CLI-инструмент на Python, который работает в фоне, следит за твоим кодом и делает снимки состояний при каждом сохранении файла

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages