Revup bietet Befehlszeilen-Tools, mit denen Entwickler parallele Änderungen schneller iterieren und den Overhead bei der Erstellung und Wartung von Codeüberprüfungen verringern können.
revup amend
und revup restack
sparen Zeit, indem sie langsame Wiederherstellungen ersetzenRevup benötigt Python 3,8 oder höher und git 2,43 oder höher. Revup arbeitet mit Linux, OSX und Windows (begrenzte Tests).
Befolgen Sie hier Anweisungen, um die neueste Git -Version für Ihr Betriebssystem zu erhalten. Revup verwendet Flags, die nur in neueren Git -Versionen vorhanden sind.
Installieren Sie mit pip
oder Ihrem bevorzugten Paketmanager.
python3.8 -m pip install revup
Stellen Sie sicher, dass die Installation erfolgreich war, indem die Help -Seite angezeigt wurde.
revup -h
Sie können auch aus Quelle erstellen, um die neuesten Updates zu erhalten.
git clone https://github.com/Skydio/revup.git && cd revup
make deps && make package && make install
In diesem Tutorial führt Sie die Verwendung grundlegender Revup -Funktionen.
Klonen Sie ein Sandbox -Repo, indem Sie Revup gegabelt, ein neues Repo erstellen oder ein anderes Repo verwenden, das Sie besitzen. Das Erstellen von Test -PRs kann spammig sein. Machen Sie also nicht das Tutorial über die Repos anderer Menschen.
git clone https://github.com/ < your-name > /revup.git && cd revup
Beim ersten Run müssen Sie GitHub -Anmeldeinformationen konfigurieren. Erstellen Sie hier ein persönliches Zugriffstoken und überprüfen Sie das Kontrollkästchen auf "vollständige Repo -Berechtigungen". Revup benötigt dies, um Pull -Anfragen zu erstellen und zu ändern. Dann rennen
revup config github_oauth
und kopieren Sie die OAuth in die Eingabeaufforderung.
Machen Sie Ihre ersten beiden Commits, die zwei separate Pull -Anfragen werden. Beachten Sie das "Thema": Tag in der Commit -Nachricht - Dies bewirkt, dass Revup ein Commit erkennt und reagiert. Jedes separat benannte Thema wird zu einer neuen Pull -Anfrage.
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
Sie haben Ihre ersten Revup -Änderungen hochgeladen! Beachten Sie, wie in Github beide Zweige auf "Haupt" abzielen. Dadurch können sie unabhängig verschmolzen werden.
Unter der Motorhaube erstellt und schiebt Revup diese Zweige für Sie, wodurch die Abhängigkeiten nach Bedarf verfolgt und verwaltet werden.
Jetzt werden wir eine neue Bewertung vornehmen, die relativ zu "Foo" ist. Das "Relative" -Tag stellt sicher, dass die neue Überprüfung den richtigen Zweig zielt.
echo deh >> foo ; git add foo
git commit -m " My second revup foo " -m " Topic: foo2 " -m " Relative: foo "
revup upload
Mit diesem einfachen, aber leistungsstarken Modell können Sie unabhängige und abhängige Änderungen auf einmal hochladen.
Lassen Sie uns nun eine Pull -Anfrage aktualisieren.
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
erleichtert es einfach, Commits in Ihrer Geschichte zu ändern. Sie haben auch andere Optionen zum Ändern von Bewertungen:
git rebase --interactive
zusammen mit git commit --amend
Verwenden Sie git pull --rebase
um Änderungen zu erziehen. Verwenden Sie nicht git merge
oder git pull
ohne Rebase, da dies ein Merge -Commit schafft.
Standardmäßig wird Revup nicht hochgeladen, wenn Sie ziehen, sondern keine Änderungen an einem Commit vorgenommen haben. Um dies zu überschreiben und immer hochzuladen, führen Sie revup upload --rebase
aus.
[pull]
rebase = true
[rebase]
autoStash = true
Wir empfehlen, das oben genannte zu .gitconfig
hinzuzufügen, um das Ziehen und Wiedergeburt zu erleichtern.
Dies ist ein nicht exexhautantes Intro für einige praktischere Revup-Funktionen.
Eine vollständige Beschreibung der Funktionen finden Sie in den Dokumenten oder reiten Sie revup -h
oder revup upload -h
aus, um Dokumente im man
-Format anzuzeigen.
Um zu Projekten beizutragen, zu denen Sie möglicherweise keinen Zugriff haben, kann Revup so konfiguriert werden, dass Sie auf eine Gabel drücken und gleichzeitig eine Pull -Anfrage im Hauptprojekt erstellen.
Fügen Sie GIT -Fernbedienungen sowohl für das Original als auch für die Gabel hinzu.
$ 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)
Geben Sie beim Hochladen die Fernbedienung über, um die Pull-Anforderung als --remote-name
und die Gabel-Fernbedienung als --fork-name
zu erstellen.
revup --remote-name origin --fork-name myfork upload
Revup kann auch Gutachter, Beauftragte und Etiketten hinzufügen, um Anfragen zu ziehen. Fügen Sie die entsprechenden Tags zu jedem Commit in einem Thema hinzu.
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
Github -Benutzernamen können abgekürzt werden und entsprechen dem kürzesten Namen mit dem angegebenen Präfix.
Etiketten müssen genau übereinstimmen. Das draft
ist etwas Besonderes und macht einen Zugangebot, wenn sie vorhanden sind, und bei der Entfernung des Entwurfs.
Revup erstellt normalerweise Ihre lokale Basiszweig automatisch und verwendet diese, um Commits und Zielbewertungen aufzulisten. Sie können wählen, ob Sie ein bestimmtes Thema auf einen anderen Zweig oder sogar mehrere Zweige ansprechen können. In diesem Fall wird Revup stattdessen als Basiszweig verwendet (und im letzteren Fall mehrere Pull -Anforderungen erstellen).
A fix for multiple branches
Topic: fix
Branches: main, rel1.1
Sie können den Basiszweig auch in der Befehlszeile angeben, obwohl dies normalerweise nicht erforderlich ist, es sei denn, Sie arbeiten an einem Zweig, von dem der Autodetektor nichts weiß (siehe Repo -Konfiguration unten).
revup upload --base-branch custom-branch-name
Revup fügt in jeder Pull -Anfrage 2 Kommentare hinzu, um Benutzern und Rezensenten hilfreiche Funktionen bereitzustellen. Diese sind standardmäßig aktiviert und automatisch aktualisiert, wenn sich die Pull -Anforderung ändert.
Die Überprüfungsgrafik enthält Links und Titel zu allen lokalen Pull -Anfragen, die eine relative Beziehung zur aktuellen Pull -Anfrage haben, einschließlich aller, von denen es abhängt oder die davon abhängt. Auf diese Weise können Sie schnell zwischen Pull -Anfragen in einer Kette durchsuchen.
Die Patchsets -Tabelle bietet einen Upload -Verlauf für eine bestimmte Pull -Anforderung sowie Links und Zusammenfassungen des Diffs zwischen jedem Upload. Insbesondere übernimmt Revup den Fall, in dem Sie wieder aufbauen und dann hochladen, und zeigt Ihnen einen Diff mit ausgeschlossenen Upstream -Dateien.
Revup ist mit einem Standard -Konfigurationsdateiformat sehr konfigurierbar. Jedes Flag ist auch eine Konfigurationsoption, sodass Benutzer das genaue Verhalten erhalten können, das sie benötigen.
Auf der Befehlszeile angegebene Flags haben Vorrang, gefolgt von einer Konfiguration in ~/.revupconfig
, gefolgt von .revupconfig
im aktuellen Repo.
Die primäre Usecase für die In-Repo-Konfigurationsdatei besteht darin, die Benennung der Hauptzweig- und Release-Zweige einzurichten.
Wenn beispielsweise Ihre Hauptzweigs master
und Release -Zweige wie rel1.1
genannt werden, verweisen Sie Folgendes an .revupconfig
in der Repo -Wurzel.
[revup]
main_branch = master
base_branch_globs =
rel[1-9].[0-9]
rel[1-9].[0-9][0-9]
Die Benutzerkonfiguration bei ~/.revupconfig
spart Zeit, indem es die am häufigsten verwendeten Flags defauert.
Nachdem sich ein Benutzer an den Workflow gewöhnt hat, benötigt er beispielsweise die Bestätigungsprüfung möglicherweise nicht. Das Hinzufügen der folgenden Zeilen entspricht dem Ausführen mit --skip-confirm
.
[upload]
skip_confirm = True
(AKA "gestapelte Diffs", "Patchbasierte" usw.)
Wenn Sie Tools wie Gerrit, Phabricator oder Git -Mailing -Listen verwendet haben, sind Sie möglicherweise bereits mit diesem Entwicklungsstil vertraut. Wenn Sie mehr lesen möchten, finden Sie hier einige gut geschriebene Diskussionen zu diesem Thema.
Revup ist teilweise von dieser nicht-ex-beherrschenden Liste von Open-Source-Projekten inspiriert, die auch einen patchbasierten Workflow unterstützen:
revup upload
, drückt oder erstellt keine Bewertungen.revup amend
und dem Backend für das obige mit einem Merge-System, das Konflikte behandelt Danke, dass du zu Revup beigetragen hast! Sie können mit Ihrer eigenen Idee beginnen oder auf der Seite der Probleme nach Ideen sehen, über die andere Personen begeistert sind.
Bei der Meldung von Problemen:
revup -v
aus, um ausführliche Protokolle bereitzustellen. Revup wird von Skydio veröffentlicht, ist jedoch kein offiziell unterstütztes Skydio -Produkt.