A Revup fornece ferramentas de linha de comando que permitem que os desenvolvedores itemem mais rapidamente em alterações paralelas e reduzem a sobrecarga de criar e manter revisões de código.
revup amend
e revup restack
Save Time, substituindo rebases lentasA Revup requer Python 3.8 ou superior e Git 2,43 ou superior. Revup funciona com Linux, OSX e Windows (teste limitado).
Siga as instruções aqui para obter a versão mais recente do seu sistema operacional. Revup usa sinalizadores apenas presentes nas versões GIT mais recentes.
Instale com pip
ou seu gerenciador de pacotes favorito.
python3.8 -m pip install revup
Verifique se a instalação foi bem -sucedida mostrando a página de ajuda.
revup -h
Você também pode construir a partir da fonte para obter as atualizações mais recentes.
git clone https://github.com/Skydio/revup.git && cd revup
make deps && make package && make install
Este tutorial o guiará usando os recursos básicos de revisão.
Clone um repositório de Sandbox batendo Revup, criando um novo repositório ou usando outro repositório que você possui. A criação de PRs de teste pode ser spam, então não faça o tutorial sobre os repositórios de outras pessoas.
git clone https://github.com/ < your-name > /revup.git && cd revup
Na primeira execução, você precisará configurar credenciais do GitHub. Crie um token de acesso pessoal aqui e verifique a caixa para "permissões de repositório completo". A Revup precisa disso para criar e modificar solicitações de tração. Em seguida, corra
revup config github_oauth
e copie e cole o OAuth no prompt.
Faça seus dois primeiros começos que se tornarão duas solicitações de tração separadas. Observe a tag "Tópico:" na mensagem de confirmação - é isso que faz da Revup reconhecer e agir em um commit. Cada tópico nomeado separadamente se tornará uma nova solicitação de tração.
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
Você enviou suas primeiras mudanças de revisão! Observe como no Github, ambas as filiais têm como alvo 'principal'. Isso permite que eles sejam mesclados de forma independente.
Sob o capô, a Revup cria e empurra esses ramos para você, rastreando e gerenciando as dependências, conforme necessário.
Agora faremos uma nova revisão relativa a "foo". A tag "relativa" garantirá que a nova revisão visa a ramificação correta.
echo deh >> foo ; git add foo
git commit -m " My second revup foo " -m " Topic: foo2 " -m " Relative: foo "
revup upload
Com esse modelo simples, mas poderoso, você pode fazer upload de alterações independentes e dependentes de uma só vez.
Agora vamos atualizar uma solicitação de tração.
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
facilita a modificação de compromissos em sua história. Você também tem outras opções para modificar críticas:
git rebase --interactive
junto com git commit --amend
Use git pull --rebase
para obter alterações. Não use git merge
ou git pull
sem rebase, pois isso cria uma confirmação de mesclagem.
Por padrão, a revup não será enviada se você puxar, mas não fizer alterações em uma confirmação. Para substituir isso e fazer upload sempre, execute revup upload --rebase
.
[pull]
rebase = true
[rebase]
autoStash = true
Recomendamos adicionar o acima ao .gitconfig
para facilitar a extração e a rebanho.
Esta é uma introdução não exaustiva a alguns recursos de revisão mais úteis.
Para uma descrição completa dos recursos, consulte os documentos ou execute revup -h
ou revup upload -h
para visualizar os documentos no formato man
.
Por contribuir com projetos aos quais você pode não ter acesso, a Revup pode ser configurada para empurrar para um garfo enquanto cria uma solicitação de tração no projeto principal.
Adicione os controles remotos Git para o original e o garfo.
$ 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)
Ao fazer o upload, passe o controle remoto para criar a solicitação de tração como --remote-name
e o controle remoto bifurcado como --fork-name
.
revup --remote-name origin --fork-name myfork upload
A Revup também pode adicionar revisores, cessionários e etiquetas para obter solicitações. Adicione as tags apropriadas a qualquer compromisso em um tópico.
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
Os nomes de usuário do Github podem ser abreviados e corresponderão ao nome mais curto com o prefixo fornecido.
Os rótulos devem corresponder exatamente. O rótulo draft
é especial e fará uma solicitação de tração um rascunho se estiver presente e desfrutar de rascunho se removido.
A revogação normalmente detecta automaticamente sua filial base local e usa isso para listar comprometes e direcionar revisões. Você pode optar por direcionar qualquer tópico específico para outra filial ou mesmo várias filiais; nesse caso, a revogação as usará como ramificação base (e criar várias solicitações de tração no último caso).
A fix for multiple branches
Topic: fix
Branches: main, rel1.1
Você também pode especificar a ramificação base na linha de comando, embora isso geralmente não seja necessário, a menos que você esteja trabalhando em uma ramificação que o autodetector não conhece (consulte a configuração repo abaixo).
revup upload --base-branch custom-branch-name
A Revup adicionará 2 comentários em todas as solicitações de tração para fornecer recursos úteis para usuários e revisores. Eles são ativados por padrão e atualizados automaticamente conforme a solicitação de tração alterações.
O gráfico de revisão fornece links e títulos para todas as solicitações de tração local que têm um relacionamento relativo com a solicitação de tração atual, incluindo qualquer que depende ou que depende dele. Isso permite que você navegue rapidamente entre solicitações de tração em uma corrente.
A tabela PatchSets fornece um histórico de uploads para uma determinada solicitação de tração, bem como links e resumos do diferencial entre cada upload. Notavelmente, a Revup lida especialmente no caso em que você rebase e o upload e mostrará um diff com arquivos a montante excluídos.
A revup é altamente configurável usando um formato de arquivo de configuração padrão. Todo sinalizador também é uma opção de configuração, para que os usuários possam obter o comportamento exato de que precisam.
Os sinalizadores especificados na linha de comando têm precedência, seguidos de configuração em ~/.revupconfig
, seguidos por .revupconfig
no repo atual.
A base principal do arquivo de configuração in-repo está configurando a nomeação das ramificações principais e de liberação.
Por exemplo, se a sua ramificação principal for master
e as filiais de liberação forem nomeadas como rel1.1
, comprometa o seguinte ao .revupconfig
na raiz do repo.
[revup]
main_branch = master
base_branch_globs =
rel[1-9].[0-9]
rel[1-9].[0-9][0-9]
A configuração do usuário em ~/.revupconfig
economiza tempo, deixando de lado os sinalizadores mais usados.
Por exemplo, depois de se acostumar com o fluxo de trabalho, um usuário pode não precisar da verificação de confirmação. A adição das seguintes linhas será a mesma que a execução com --skip-confirm
.
[upload]
skip_confirm = True
(também conhecido
Se você usou ferramentas como listas de discussão Gerrit, Phabricator ou Git, você já pode estar familiarizado com esse estilo de desenvolvimento. Se você quiser ler mais, aqui estão algumas discussões bem escritas sobre o assunto.
A Revup é inspirada em parte por esta lista não exaustiva de projetos de código aberto que também suportam um fluxo de trabalho baseado em patch:
revup upload
mas não pressiona ou cria críticas.revup amend
e ao back-end para o acima com um sistema de mesclagem que lida com conflitos Obrigado por contribuir com a Revup! Você pode começar com sua própria ideia ou ver a página de problemas para obter idéias com as quais outras pessoas estão empolgadas.
Ao relatar problemas:
revup -v
para fornecer logs detalhados. A Revup é publicada pela Skydio, mas não é um produto SkyDio oficialmente apoiado.