Revup предоставляет инструменты командной строки, которые позволяют разработчикам быстрее итерации при параллельных изменениях и уменьшают накладные расходы на создание и поддержание обзоров кода.
revup amend
and revup restack
Сэкономьте время, заменив медленные перезагрузкиRevup требует Python 3.8 или выше и GIT 2,43 или выше. Revup работает с Linux, OSX и Windows (ограниченное тестирование).
Следуйте инструкциям здесь, чтобы получить последнюю версию GIT для вашей ОС. Revup использует флаги, присутствующие только в более новых версиях GIT.
Установите с pip
или вашим любимым менеджером пакетов.
python3.8 -m pip install revup
Убедитесь, что установка была успешной, показывая страницу справки.
revup -h
Вы также можете построить из источника, чтобы получить последние обновления.
git clone https://github.com/Skydio/revup.git && cd revup
make deps && make package && make install
Этот учебник поможет вам использовать базовые функции Revup.
Clone A Sandbox Repo, разбив Revup, создав новое репо, или используя какой -то другой репо. Создание тестовых PRS может быть спамми, поэтому не делайте учебник по репо другим людям.
git clone https://github.com/ < your-name > /revup.git && cd revup
При первом запуске вам нужно будет настроить учетные данные GitHub. Создайте здесь личный токен доступа и установите флажок «Полные разрешения репо». Revup нуждается в этом, чтобы создать и изменить запросы на тягу. Затем беги
revup config github_oauth
и скопируйте и вставьте OAuth в подсказку.
Сделайте свои первые два коммита, которые станут двумя отдельными запросами на притяжение. Обратите внимание на «Тема:» Tag в сообщении Commit - это то, что заставляет Revup распознавать и действовать на коммите. Каждая отдельно названная тема станет новым запросом на привлечение.
echo meh > foo ; git add foo
git commit -m " My first revup foo " -m " Topic: foo "
echo peh > bar ; git add bar
git commit -m " My first revup bar " -m " Topic: bar "
revup upload
Вы загрузили свои первые изменения Revup! Обратите внимание, как в GitHub обе ветви нацелены «Main». Это позволяет им объединяться независимо.
Под капотом Revup создает и толкает эти ветви для вас, отслеживая и управляя зависимостями по мере необходимости.
Теперь мы сделаем новый обзор, который относится к «Foo». «Относительный» тег обеспечит новое обзор нацелен на правильную ветвь.
echo deh >> foo ; git add foo
git commit -m " My second revup foo " -m " Topic: foo2 " -m " Relative: foo "
revup upload
С помощью этой простой, но мощной модели вы можете загрузить независимые и зависимые изменения одновременно.
Теперь давайте обновим запрос на тягу.
echo heh >> bar ; git add bar
# Either
revup amend HEAD~ --no-edit # Specify a commit to amend
# or
revup amend bar --no-edit # Specify a topic name to amend
revup upload
revup amend
позволяет легко изменять коммиты в вашей истории. У вас также есть другие варианты изменения обзоров:
git rebase --interactive
вместе с git commit --amend
Используйте git pull --rebase
чтобы втянуть в изменения. Не используйте git merge
или git pull
без Rebase, так как это создает коммит слияния.
По умолчанию Revup не загружается, если вы тянете, но не внесли изменения в коммит. Чтобы переопределить это и загружать всегда, запустите revup upload --rebase
.
[pull]
rebase = true
[rebase]
autoStash = true
Мы рекомендуем добавить вышеперечисленное в .gitconfig
чтобы упростить тягу и переживание.
Это не эксплуатационное вступление к некоторым более удобным функциям Revup.
Полное описание функций, см. Docs или запустите revup -h
или revup upload -h
для просмотра документов в формате man
.
Для участия в проектах, которые у вас, возможно, не иметь доступа, Revup может быть настроен на то, чтобы подтолкнуть к вилке при создании запроса на привлечение в главном проекте.
Добавьте git lemotes как для оригинала, так и для вилки.
$ git remote -v
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (fetch)
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (push)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (fetch)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (push)
При загрузке пропустите удаленную дистанционную службу, чтобы создать запрос на вытягивание в As --remote-name
и раздвоенный пульт дистанционного управления как --fork-name
.
revup --remote-name origin --fork-name myfork upload
Revup также может добавить рецензентов, правопреемников и ярлыков для получения запросов. Добавьте соответствующие теги в любой коммит в тему.
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
Имена пользователей GitHub могут быть сокращены и будут соответствовать кратчайшему названию с данным префиксом.
Метки должны точно соответствовать. draft
ярлыка является особенным и сделает запрос на тягу, если он присутствует, и разместить проект, если он будет удален.
Обычно отказаться от автоматического определения вашего локального базового филиала и использует это для перечисления коммитов и обзоров целей. Вы можете выбрать нацеливание на любую конкретную тему на другую филиал или даже несколько ветвей, и в этом случае Revup будет использовать их в качестве базовой ветви (и создает несколько запросов на вытяжение в последнем случае).
A fix for multiple branches
Topic: fix
Branches: main, rel1.1
Вы также можете указать базовую ветвь в командной строке, хотя это обычно не требуется, если вы не работаете над ветвью, о которой автодетектор не знает (см. Repo Config ниже).
revup upload --base-branch custom-branch-name
Revup добавит 2 комментария в каждом запросе Pull, чтобы предоставить полезные функции для пользователей и рецензентов. Они включены по умолчанию и автоматически обновляются при изменении запроса на вытяжение.
График обзора предоставляет ссылки и заголовки для всех локальных запросов на притяжение, которые имеют относительные отношения с текущим запросом на привлечение, включая любой, от которого он зависит, или от которых от него зависят. Это позволяет быстро просматривать запросы на вытягивание в цепочке.
Таблица Patchsets содержит историю загрузок для данного запроса на вытяжение, а также ссылки и резюме различия между каждой загрузкой. Примечательно, что Revup специально обрабатывает случай, когда вы перезагружаете, а затем загружаете и покажет вам различие с исключенными вверх по течению файлов.
Revup очень настраивается с использованием стандартного формата файла конфигурации. Каждый флаг также является опцией конфигурации, поэтому пользователи могут получить точное поведение, которое им нужно.
Флаги, указанные в командной строке, имеют приоритет, за которым следует конфигурация в ~/.revupconfig
, за которым следует .revupconfig
в текущем репо.
Основным использованием файла конфигурации In-Repo настройка настройки именования основной ветви и выпуска ветвей.
Например, если ваша основная филиала является master
, а филиалы выпуска называются как rel1.1
, отправьте следующее в .revupconfig
в корне Repo.
[revup]
main_branch = master
base_branch_globs =
rel[1-9].[0-9]
rel[1-9].[0-9][0-9]
Конфигурация пользователя в ~/.revupconfig
экономит время, не выполняя наиболее часто используемые флаги.
Например, после привыкания к рабочим процессам пользователю может не понадобиться проверка подтверждения. Добавление следующих строк будет таким же, как и с помощью --skip-confirm
.
[upload]
skip_confirm = True
(aka "Сложные различия", "на основе патчей" и т. Д.)
Если вы использовали такие инструменты, как списки рассылки Gerrit, Phabricator или GIT, вы, возможно, уже знакомы с этим стилем разработки. Если вы хотите узнать больше, вот несколько хорошо написанных дискуссий по этому вопросу.
Revup частично вдохновлен этим неэкгарсационным списком проектов с открытым исходным кодом, которые также поддерживают рабочий процесс на основе патчей:
revup upload
но не толкают и не создают отзывы.revup amend
и Backend для вышеизложенного с системой слияний, которая обрабатывает конфликты Спасибо, что внесли свой вклад в Revup! Вы можете начать работу с собственной идеей или увидеть страницу проблем для идей, которые волнуют другие люди.
При репортаже:
revup -v
чтобы обеспечить многословные журналы. Revup публикуется Skydio, но не является официально поддерживаемым продуктом Skydio.