Ich versuche, einen Darcs-Spiegel eines Git-Repository einzurichten. Ich habe etwas, das funktioniert OK, aber es gibt ein signifikantes Problem: Wenn ich eine ganze Reihe von Commits zum Git Repo drücke, werden diese Commits in einem einzigen Darcs Patchset zusammengeführt. Ich möchte wirklich sicherstellen, dass jedes Git-Commit als ein einzelnes Darcs-Patchset eingerichtet wird. Ich wette, das ist möglich, indem ich eine Art von git fetch
gefolgt von der Abfrage der lokalen Kopie der Remote-Zweigstelle, aber meine git fu ist nicht an die Aufgabe.Wie wird ein Commit nach dem anderen aus einem Remote-Git-Repository abgerufen?
Hier ist die (KSH) -Code ich jetzt benutze, mehr oder weniger:
git pull -v # pulls all the commits from remote --- bad!
# gets information about only the last commit pulled -- bad!
author="$(git log HEAD^..HEAD --pretty=format:"%an <%ae>")"
logfile=$(mktemp)
git log HEAD^..HEAD --pretty=format:"%s%n%b%n" > $logfile
# add all new files to darcs and record a patchset. this part is OK
darcs add -q --umask=0002 -r .
darcs record -a -A "$author" --logfile="$logfile"
darcs push -a
rm -f $logfile
Meine Idee
- Versuchen
git fetch
ist die lokale Kopie des Remote-Zweiges zu erhalten (nicht sicher, genau welche Argumente benötigt werden) - Irgendwie die lokale Kopie abfragen, um einen Hash für jedes Festschreiben seit der letzten Spiegelungoperation zu erhalten (ich habe keine Idee, wie man das tut)
- Schleife durch alle Hashes, ziehen nur, dass begehen und die Aufzeichnung der zugehörigen Patchset (ich bin mir ziemlich sicher, dass ich weiß, wie dies zu tun, wenn ich meine Hände auf den Hash bekommen)
Ich würde gern gesehen entweder Hilfe fleshing aus dem Szenario über oder Vorschläge über etwas anderes sollte ich versuchen.
Ideen?
Nur zur Erinnerung, es gibt ein paar neue Antworten, die Sie nicht kommentiert haben. (Offensichtlich einer von ihnen, denke ich, beantwortet Ihre Frage wirklich besonders gut;)) –