Меньше года назад мы рассказывали о разработке нашей новой веб-платформы для просмотра исходного кода.
За прошедшее время Upsource претерпел массу мелких и крупных изменений и стал, в частности, инструментом для code review. На днях же мы открыли программу EAP (Early Access Program), и предрелизные билды Upsource теперь доступны для всех желающих. На момент написания статьи число желающих стремительно приближается к тысяче, и не исключено, что вам тоже будет интересно лично познакомиться с нашим новым продуктом.
Коротко, JetBrains Upsource — это продукт, который устанавливается на внутреннем сервере компании (on-premises) и предоставляет навигацию по репозиториям с исходным кодом, анализ кода, позволяет обсуждать код и производить code review.
Поскольку продукт молод, но возможности его — как нынешние, так и потенциальные — очень обширны, мы кратко обозначим, что Upsource сейчас умеет, а чего — не умеет.
Итак, вот что сейчас позволяет делать Upsource:
- Следить за изменениями в имеющихся репозиториях на базе Git, Mercurial, Subversion и/или Perforce, в том числе видеть все текущие и существовавшие ранее ветки, историю их ответвления и вливания в мастер. К Upsource можно подключать как репозитории на внутренних серверах компании, так и размещенные на хостингах (например, GitHub).
- Проводить поиск по истории изменений в репозитории. С помощью запросов (синтаксис похож на запросы в YouTrack) можно делать выборки истории проекта — например, показывать изменения только в определенной ветке, сделанные конкретным разработчиком, появившиеся в заданном временном диапазоне, или имеющие в коммит-сообщении те или иные слова.
- Подробно изучать изменения в новых ревизиях. Можно просматривать изменения как выжимкой (в режиме inline), так и сравнивая две смежные ревизии (side-by-side).
- Читать содержание репозитория в любой ревизии, файл за файлом. Upsource позволяет просматривать структуру любой ревизии, открывать из дерева или искать любые файлы в ревизии, изучать историю их изменений, выяснять, кто и когда последний раз правил ту или иную строчку кода, и инициировать обсуждения прямо на листингах файлов.
- Пользоваться статическим анализом кода в Java-проектах, то есть видеть в браузере все те сотни Java-инспекций, которые есть в IntelliJ IDEA. Инспекции видны как во время просмотра листингов Java-файлов, так или при изучении любого коммита в случае перехода в режим side-by-side diff. Также для Java доступны дополнительные возможности навигации: Go to Symbol, Go to Declaration, Find Usages, Type Hierarchy — все то, что традиционно существует только в IDE.
- Обсуждать код и его изменения, или проводить code review. Здесь полная свобода действий: можно обсуждать специфические проблемы в коде и призывать авторов к ответу в неофициальном порядке, а можно заводить code review на новых коммитах, чтобы одни коллеги просто были в курсе изменений, а другие могли отрецензировать ваш труд. И отдельно стоящие дискуссии, и code review в Upsource хороши тем, что время их жизни не ограничено, и если вы, когда-то изучая старую ревизию файла, заметили недостаточную обработку исключений и сообщили об этом автору, создав дискуссию, а автор ваше замечание гордо проигнорировал, то когда этот файл будет в следующий раз подан на code review, дискуссия окажется видна коллегам, выступающим в роли рецензентов.
Теперь коротко о том, чего Upsource сейчас не позволяет:
- Создавать репозитории, открывать и закрывать ветки. Полноценному менеджменту репозиториев Upsource пока что не обучен, но мы понимаем, что двигаться в этом направлении очень логично.
- Жить в облаке. Сейчас и в обозримом будущем Upsource — это инструмент, предназначенный для установки на внутренних серверах компаний.
- Проводить code review в IDE или по крайней мере поменьше из неё вылезать. Впрочем, мы работаем над плагином к IntelliJ IDEA для code review, и к релизу Upsource 1.0 он должен быть готов.
- Проводить code review на изменениях, которые еще не попали в репозиторий. Из двух разновидностей code review — pre-commit review и post-commit review — Upsource поддерживает только последнюю. Возможно, когда-нибудь мы поддержим и pre-commit review, но это пока не решено.
- Настраивать правила (workflow) для code review. Если у вас принято, что изменения в модуле A должны быть отрецензированы двумя senior-разработчиками, а еще полкоманды должны на них взглянуть, автоматизировать это и подобные правила пока не получится. Над поддержкой правил мы будем работать, но уже после релиза Upsource 1.0.
- Выполнять статический анализ кода на других языках. Более того — даже Java-проекты поддерживаются не все (например, Maven поддержан, а Gradle пока нет). Про поддержку других языков (C#, Scala, Python, Ruby) у нас спрашивают и мы думаем, а что-то даже делаем, но показывать на публику пока нечего.
Для того, чтобы лучше понять, что из себя представляет Upsource, предлагаем посмотреть 10-минутное видео от нашего технического евангелиста Hadi Hariri:
Что можно сделать, если вас заинтересовал Upsource?
- Скачать предрелизный билд Upsource, присоединившись к программе раннего доступа (EAP). Если у вас есть время и желание поставить билд, посмотреть, как выглядят в нем ваши проекты, и составить некоторое впечатление о продукте, этот вариант для вас.
- Подписаться на новости продукта, чтобы быть в курсе предстоящих бета-релизов и финального релиза. Мы понимаем, что возможность играться с предрелизными версиями серверных продуктов воодушевляет далеко не всех, поэтому если вам лишь хочется знать, когда Upsource пойдет в релиз, подписывайтесь.
- Просто узнать об Upsource подробнее. На официальном сайте есть более представительный обзор возможностей Upsource как инструмента для просмотра репозиториев и code review — разумеется, по-английски.
Upsource, как и многие другие инструменты JetBrains, был опробован на наших внутренних задачах. На данный момент наша инсталляция Upsource обрабатывает 56 репозиториев исходного кода, в том числе один из самых больших публичных GitHub-репозиториев – IntelliJ IDEA Community Edition.
Мы надеемся, что предрелизная фаза продлится несколько месяцев, и уже до конца текущего года Upsource 1.0 будет выпущен.
Команда JetBrains
Автор: beenom