jj v0.46, второе прочтение: съезд расширился, у undo появились ограждения
Две недели, +216 звёзд и один релиз спустя: colocate через worktree удешевляет пробу, меж-workspace undo по умолчанию отказано — а бенч всё ещё должны.
■ space · чтение дельты — jujutsu v0.46, второй заход
v0.46.0 вышла 7 октября — workspace'ы jj теперь селятся через настоящие git worktree, а jj undo между workspace'ами по умолчанию отказано. Безопаснее, а не просто новее.
Две недели, по нашим же двум прочтениям: 31 796 → 32 012 звёзд, релиз с шагом 34 дня, репозиторий запушен утром, когда писалось это.
Ваш репозиторий остаётся 100 % git. В colocated GitHub и ваши коллеги видят самый обычный git-репозиторий — цена перехода это мышечная память, не миграция.
И ложь, которую этот текст отвергает: будто номер версии — новость. Большинство точечных релизов — сантехника. v0.46.0 — нет: она меняет арифметику перехода, и данные спроса за две недели объясняют, почему это важнее, чем признаёт changelog.
КАРТОЧКА ДВУХ НЕДЕЛЬ
Сначала цифры, потому что это единственная часть текста, с которой никто не поспорит.
| замер | первое прочтение (29 сен) | второе прочтение (13 окт) |
|---|---|---|
| звёзды GitHub | 31 796 | 32 012 (+216 / 14 дней ≈ 15/день) |
| последний релиз | v0.45.1 (3 сен) | v0.46.0 (7 окт — зазор 34 дня) |
| репозиторий запушен | активен | 05:22 UTC сегодня утром |
| открытые issues | — | 1 260 |
Звёзды — суета, ритм — сигнал: два релиза за шесть недель с аккуратно перечисленными breaking changes — это проект, который шипит и говорит, что сломал. 1 260 открытых issues читаются так же — инструмент в движении, а не доделанный.
Второй сигнал несёт наш собственный реестр. Самая большая семья впечатлений в git-кластере этого месяца — по-прежнему undo a commit but keep the changes — +100 % впечатлений неделя к неделе и почти ноль кликов: честный git-ответ уходит на три команды, и читатели это чуют. Спрос на undo не ждал jj. Он и никогда не ждёт.
JUJUTSU VS GIT: ТАБЛИЦА UNDO
Первое прочтение объясняло модель — рабочая копия является коммитом, каждая операция пишется в журнал операций, конфликты — граждане первого сорта. Чего она перескочила и что данные поиска говорят нам как нужное в 6 утра — таблица на уровне фраз: задача, набранная так, как её набирают искатели, на обоих диалектах.
| задача | git (заклинание) | jj (операция) |
|---|---|---|
| отменить последнюю мою операцию | reflog, прищур, reset --soft или reset --keep | jj undo |
| отменить отмену | чистого пути нет | jj redo |
| увидеть, что только что случилось | git reflog | jj op log |
| поправить последний коммит | git commit --amend | правишь файлы — коммит рабочей копии правится сам |
| отложить конфликт на потом | нельзя — разрешай сейчас или стоп | конфликты — коммиты; разрешай когда вздумается |
В git undo — археология: копай reflog, найди осколок, пересобери. В jj лента никогда не была закопана: undo — операция над журналом операций. Раскопки против кнопки перемотки.
Представь: git даёт тебе чёрный ящик — прикрученный сзади самолёта, читаемый после катастрофы. jj прицепил его на приборную панель и подсоединил к кнопке перемотки.
V0.46.0: ДВА ИЗМЕНЕНИЯ, КОТОРЫЕ ВАЖНЫ
Workspace'ы, которые селятся через настоящие git worktree. jj workspace add --colocate (или настройка git.colocate) ставит workspace jj рядом с обычным git checkout, не забирая клон себе. Читайте как расширение съезда: команда может держать workspace jj рядом с git-чекартом на той же машине и в том же репозитории и сравнивать — ровно та проба, которую просил вердикт первого прочтения. Опирается на git worktree add --orphan, оттого минимум git поднимается до 2.42.0.
Undo, знающий свои границы. jj undo и jj redo отныне отказываются трогать операции из другого workspace, если вы не передали --allow-cross-workspace. Инструмент, чья вся рекламная линия — «undo безопасно», — затягивает ограды вокруг undo; тест культуры пройден. Остальные заметки читаются в том же духе: jj bisect run проверяет свои хорошую и плохую конечные точки перед ходьбой, а jj split перестал жонглировать сессиями редактора.
ПОПРОБУЙ АВИАПИСЬ, НИЧЕМ НЕ РИСКУЯ
Одноразовый клон, три команды — и реестр реален на вашей машине, а не только в доках.
# in a throwaway clone — git keeps working exactly as before
jj git init --colocate
# a .jj directory now sits beside .git; the recorder is running:
jj op log
# the door out, whenever you want it:
rm -rf .jj
проверка: jj op log в этом клоне выводит ваши операции с метками времени — строка на команду означает, что реестр реален.
ЧЕСТНЫЙ РЕЕСТР: ЧТО ЛОМАЕТСЯ
Мышечная память, во-первых. Танец индекса — git add -p, частичная постановка на сцену — отображается в squash и split из jj, решающих ту же задачу другими руками. Первую неделю вы будете набирать git-глаголы и раздражаться.
Оптика команды, во-вторых. Colocate-репозитории выглядят как простой git и для хостинга, и для коллег — но коммиты рабочей копии пользователя jj видны лишь после push, и на вопрос «где моя полусделанная работа» ответ не такой, как ожидают git-люди. Малые команды пожмут плечами; монорепам с глубокими цепочками инструментов стоит подождать. Отказ меж-workspace undo в v0.46 — ещё одна граница для изучения — обдуманно и честно, верное решение.
А чек, которого всё нет: бенчмарки. Два прочтения спустя, утверждение всё ещё не сделано. Мы не можем сказать, превосходит ли rebase jj'а git'овский в репозитории на 10 000 коммитов, потому что не гоняли — этой цифры не существует, пока не существует бенч, а второе прочтение не превращает чтение карточки в бенч.
ВЕРДИКТ, ИСПРАВЛЕННЫЙ: КТО ДВИГАЕТСЯ НА НЕДЕЛЕ
Первое прочтение сказало: попробуйте. Две недели и один релиз спустя арифметика сдвинулась ровно в одну сторону — worktree-соседство v0.46 удешевило саму пробу, а данные спроса окрепли. Семейство undo на нашем табло не охладело ни на одно впечатление; инструмент, отвечающий на него одной командой, выстрелил дважды. Когда зазор такой ширины продолжает расширяться, кто-то его закроет. jj закрывает его на уровне модели, а не мнемоники — полное сравнение лежит рядом с классическим решением, которое он тревожит: revert vs reset, у которого теперь третий ответ, и третий ответ — кнопка.
- Соло-разработчики и маленькие команды со шрамами от undo.
- Все, кто преподаёт git и устал смотреть, как падают лица у reflog.
- Репозитории под агентов — полоса, за которой мы следим пристальнее всего — где каждая операция обязана быть обратимой и ревизуемой по умолчанию. Журнал операций там не удобство; это поверхность аудита, которую git так и не выпустил.
- Глубокие цепочки git-инструментов и обвешанные хуками допущения CI.
- Кто в разгаре миграции — ничто тут не стареет хорошим на середине полёта.
- И подождите бенч. Следующая jj-пьеса этого сайта погоняет jj против git на настоящем репозитории и печатает самое уродливое число первым — карточка двух недель покупала право на сомнение ровно один раз.
Два вопроса перед этим бенчем: отказывал ли вам reflog-спас в худший из возможных моментов — и если погоняете jj всерьёз в этом месяце, что ломается первым? Скажите, что тестировать.
конец второго прочтения · ничего не скачано · всё локально