19 Stimmen

Auf der Suche nach Beispielen für Workflows unter Verwendung von git-format-patch und git am.

Ich überlege, meine Schüler zu bitten, git für Pair Programming zu verwenden. Da die Arbeit der Schüler geheim bleiben muss, ist ein öffentliches Repo ausgeschlossen. Stattdessen wird jeder Schüler ein eigenes privates Repo haben, das sie selbst pflegen, und sie müssen Patches mit git-format-patch austauschen. Ich habe die Manpage gelesen, bin mir aber ein wenig unsicher, welche Patches gesendet werden. Das Naheliegende für die Schüler wäre alle Patches seit dem letzten Senden zu senden oder (falls git redundante Patches akzeptiert) alle Patches seit Anbeginn der Zeit zu senden. (Denken Sie daran, dass es sich um Schülerprojekte handelt, die ein paar Wochen dauern und klein sind, und dass Leistungsfähigkeit kein Kriterium ist.) Unser bester Freund ist Einfachheit und wir mögen auch Brute Force.

Kann mir jemand eine kurze Serie von Beispielen geben, die zeigen, wie zwei Personen, jeweils mit einem privaten git-Repo, Patches mit git-format-patch und git-am austauschen? Oder mich alternativ auf bestehende git-Dokumentation und / oder Tutorials verweisen?

0 Stimmen

21voto

Dustin Punkte 85400

Es funktioniert am besten, wenn sie die Git-Repositories des anderen sehen können. Git selbst wird auf diese Weise verwaltet (es gibt ein öffentliches Repository, auf das die Leute verweisen können, und dann formatieren sie von dort aus). Wenn Leute sich nie die Repositories des anderen ansehen, wird es etwas schwieriger...

Eine Sache, die sie tun können, ist einen Verweis auf das letzte Mal zu speichern, als sie ein Format-Patch gemacht haben. Angenommen, sie beginnen damit, einfach ihren gesamten Baum zu senden (einschließlich .git):

tar cvf - mytree | gzip -9vc > /tmp/mytree.tgz
# mail /tmp/mytree.tgz
git tag last-send
# hacken, committen, hacken, committen
git format-patch -M -C last-send..
# mail 00* && rm 00*
git tag -f last-send

git tag in dieser Form erstellt ein "leichtgewichtiges Tag". Es ist eine Art Lesezeichen. Dies wird für die Leute ein einfacher Weg sein, um zu verfolgen, was sie gesendet haben, damit sie es beim nächsten Mal erneut senden können.

Auf der anderen Seite:

# Patches aus der E-Mail holen und in /tmp platzieren
git am /tmp/00*
rm /tmp/00*

0 Stimmen

Leider sehen sie sich nie die Repos des anderen an - obwohl sie vielleicht beide vor einem Computer arbeiten, an einem der beiden Repos. Aber das sieht aus wie das, was ich gehofft hatte, also bekommt es mein Up-Vote.

0 Stimmen

Vielen Dank für diese Antwort. Sie hat mir geholfen, ein chaotisches SVN-Repository in Git umzuwandeln. Meine Erfahrungen sind unter blog.orfjackal.net/2009/05/…

0 Stimmen

Was ist mit git bundle? Es scheint, dass dies die bessere Methode für diesen Workflow zum Teilen von Code ist. Im Gegensatz zu format-patch handelt es sich um einen eher einseitigen Kommunikationsworkflow.

0voto

Sukima Punkte 9785

Es scheint, dass git bundle die bessere Option ist. Im Gegensatz zu git format-patch, das einen Einweg-Kommunikationsablauf bietet, ermöglicht es Bundle, den gleichen Ablauf zu nutzen, den Sie bei öffentlichen Remotes verwenden, aber von direktem Zugriff getrennt sind.

Es ist für Sneakernetze konzipiert und wäre perfekt für Studenten, um Bundles auf einem USB zu speichern oder per E-Mail zu verschicken.

Patches sind eher dafür geeignet, von einem Projektverantwortlichen zur Genehmigung eingereicht zu werden, um zu kommunizieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X