RevUP fournit des outils de ligne de commande qui permettent aux développeurs d'itérer plus rapidement sur les modifications parallèles et de réduire les frais généraux de création et de maintien des revues de code.
revup amend
et revup restack
économiser le temps en remplaçant lent rebasesRevup nécessite Python 3,8 ou plus et GIT 2,43 ou plus. RevUp fonctionne avec Linux, OSX et Windows (test limité).
Suivez les instructions ici pour obtenir la dernière version Git pour votre système d'exploitation. RevUp utilise les drapeaux uniquement présents dans les versions GIT plus récentes.
Installez avec pip
ou votre gestionnaire de packages préféré.
python3.8 -m pip install revup
Vérifiez que l'installation a été réussie en affichant la page d'aide.
revup -h
Vous pouvez également construire à partir de Source pour obtenir les dernières mises à jour.
git clone https://github.com/Skydio/revup.git && cd revup
make deps && make package && make install
Ce tutoriel vous guidera à travers l'utilisation des fonctionnalités de base de la revup.
Clone A Sandbox Repo en FORKING REVUP, en créant un nouveau dépôt ou en utilisant un autre référentiel que vous possédez. La création de PRS de test peut être un spam, alors ne faites pas le tutoriel sur les références des autres.
git clone https://github.com/ < your-name > /revup.git && cd revup
Lors de la première exécution, vous devrez configurer les informations d'identification GitHub. Créez ici un jeton d'accès personnel et cochez la case pour "Autorisations de réapprovisionnement complètes". Revup en a besoin pour créer et modifier les demandes de traction. Puis courez
revup config github_oauth
et copier et coller l'oauth dans l'invite.
Faites vos deux premiers commits qui deviendront deux demandes de traction distinctes. Remarquez le "Topic:" Tag dans le message de validation - c'est ce qui fait que la revers reconnaît et agit sur un engagement. Chaque sujet nommé séparément deviendra une nouvelle demande de traction.
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
Vous avez téléchargé vos premiers changements de revup! Remarquez comment dans GitHub, les deux branches ciblent «Main». Cela leur permet d'être fusionné indépendamment.
Sous le capot, Revup crée et pousse ces branches pour vous, en suivant et en gérant les dépendances au besoin.
Nous allons maintenant faire une nouvelle critique relative à "FOO". La balise "relative" garantira que la nouvelle revue cible la branche correcte.
echo deh >> foo ; git add foo
git commit -m " My second revup foo " -m " Topic: foo2 " -m " Relative: foo "
revup upload
Avec ce modèle simple mais puissant, vous pouvez télécharger des changements indépendants et dépendants en une seule fois.
Mettons à jour maintenant une demande de traction.
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
facilite la modification des commits dans votre histoire. Vous avez également d'autres options pour modifier les avis:
git rebase --interactive
avec git commit --amend
Utilisez git pull --rebase
pour extraire les modifications. N'utilisez pas git merge
ou git pull
sans rebase car cela crée un engagement de fusion.
Par défaut, Revup ne téléchargera pas si vous tirez mais n'a pas apporté de modifications à un engagement. Pour remplacer cela et télécharger toujours, exécutez revup upload --rebase
.
[pull]
rebase = true
[rebase]
autoStash = true
Nous vous recommandons d'ajouter ce qui précède à .gitconfig
pour faciliter la traction et la rebasse.
Il s'agit d'une introduction non exhaustive à certaines fonctionnalités de revue plus pratiques.
Pour une description complète des fonctionnalités, consultez les documents ou exécutez revup -h
ou revup upload -h
pour afficher les documents au format man
.
Pour contribuer à des projets auxquels vous n'avez peut-être pas un accès push, RevUp peut être configuré pour pousser à une fourche tout en créant une demande de traction dans le projet principal.
Ajoutez des télécommandes GIT pour l'original et la fourche.
$ 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)
Lors du téléchargement, passez la télécommande pour créer la demande de traction dans le --remote-name
et la télécommande fourchue en tant que --fork-name
.
revup --remote-name origin --fork-name myfork upload
RevUp peut également ajouter des examinateurs, des cessionnaires et des étiquettes pour extraire les demandes. Ajoutez les balises appropriées à tout engagement dans un sujet.
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
Les noms d'utilisateur GitHub peuvent être abrégés et correspondent au nom le plus court avec le préfixe donné.
Les étiquettes doivent correspondre exactement. L'étiquette draft
est spéciale et fera une demande de traction un projet en cas de présent et défaut le brouillon s'il est supprimé.
Revupt normalement automatiquement votre branche de base locale et utilise celle pour répertorier les commits et cibler les avis. Vous pouvez choisir de cibler un sujet particulier dans une autre branche ou même plusieurs branches, auquel cas Revup les utilisera comme la branche de base à la place (et créera plusieurs demandes de traction dans ce dernier cas).
A fix for multiple branches
Topic: fix
Branches: main, rel1.1
Vous pouvez également spécifier la branche de base sur la ligne de commande, bien que cela ne soit généralement pas nécessaire à moins que vous ne travailliez sur une branche que l'autodétecteur ne connaît pas (voir la configuration de repo ci-dessous).
revup upload --base-branch custom-branch-name
RevUp ajoutera 2 commentaires dans chaque demande de traction pour fournir des fonctionnalités utiles pour les utilisateurs et les examinateurs. Ceux-ci sont activés par défaut et mis à jour automatiquement à mesure que la demande de traction change.
Le graphique de révision fournit des liens et des titres à toutes les demandes de traction locales qui ont une relation relative avec la demande de traction actuelle, y compris celle dont elle dépend ou qui en dépendent. Cela vous permet de naviguer rapidement entre les demandes de traction dans une chaîne.
Le tableau PatchSets fournit un historique de téléchargements pour une demande de traction donnée ainsi que des liens et des résumés du Diff entre chaque téléchargement. Notamment, RevUP gère spécialement le cas où vous rébasez puis téléchargez et vous montrera un Diff avec des fichiers en amont exclus.
RevUp est hautement configurable à l'aide d'un format de fichier de configuration standard. Chaque indicateur est également une option de configuration, afin que les utilisateurs puissent obtenir le comportement exact dont ils ont besoin.
Les drapeaux spécifiés sur la ligne de commande ont priorité, suivi de la configuration dans ~/.revupconfig
, suivi de .revupconfig
dans le repo actuel.
La principale USECASE pour le fichier de configuration in-repo est la configuration de la dénomination des branches de branche principale et de libération.
Par exemple, si votre branche principale est master
et que les branches de libération sont nommées comme rel1.1
, engagez ce qui suit sur .revupconfig
dans la racine du repo.
[revup]
main_branch = master
base_branch_globs =
rel[1-9].[0-9]
rel[1-9].[0-9][0-9]
La configuration de l'utilisateur à ~/.revupconfig
gagne le temps en défautant les drapeaux les plus couramment utilisés.
Par exemple, après s'être habitué au workflow, un utilisateur peut ne pas avoir besoin de la vérification de confirmation. L'ajout des lignes suivantes sera la même que l'exécution de --skip-confirm
.
[upload]
skip_confirm = True
(aka "diffs empilés", "patch basés", etc.)
Si vous avez utilisé des outils tels que Gerrit, Phabricator ou Git Mailing Lists, vous connaissez peut-être déjà ce style de développement. Si vous souhaitez en savoir plus, voici quelques discussions bien écrites sur le sujet.
RevUp est inspiré en partie par cette liste non exhaustive de projets open source qui prennent également en charge un flux de travail basé sur les correctifs:
revup upload
mais ne poussent pas ou ne créent pas de critiques.revup amend
et le backend pour ce qui précède avec un système de fusion qui gère les conflits Merci d'avoir contribué à la revers! Vous pouvez commencer avec votre propre idée, ou voir la page des problèmes pour les idées qui sont excitées par les autres.
Lors de la signalement des problèmes:
revup -v
pour fournir des journaux verbeux. RevUp est publié par Skydio mais n'est pas un produit Skydio officiellement pris en charge.