Holen Sie sich den Git Future Commit Hash, bevor PR zusammengeführt wird [Duplikat]
Ich habe ein bestimmtes Szenario. Ich habe eine PR angehoben. Es gibt mehrere Commits für diese PR.
Jetzt muss ich den Commit-Hash abrufen, der nach dem Zusammenführen dieser PR zum Master generiert wird. Ist es möglich, den Commit-Hash vor dem Zusammenführen abzurufen?
Angenommen, eine Anwendungskomponente ist: xyz
Wir haben eine PR für diesen Feature-Zweig erstellt, um Jenkins zu beherrschen -> PR-Build startet -> Bereitstellung der Anwendung auf einem Knoten -> Jacoco-Plugin in der Anwendung erstellt eine Exec-Datei
PR-Zusammenführung geschah vom Master-Build -> jetzt keine Bereitstellung für CC ...
Nach Abschluss der Bereitstellung wird von einem separaten Ort aus ein CC-Abdeckungsjob ausgelöst -> der die Exec-Datei nimmt und auf das Sonar überträgt.
Hier habe ich versucht, es so zu machen. Der Name der Exec-Datei hat die <Future_git_commit_hash> _xyz.exec
Im CC-Coverage-Job werde ich diese commit_id auschecken und dann auf Sonar drücken. (hier brauchen wir im Allgemeinen nicht die commit_id, Master nur können wir auschecken und zum Sonar pushen) ...
Das Problem tritt auf, wenn: vor dem Drücken auf Sonar erneut eine PR ausgelöst wird. und eine neue exec-Datei wird erstellt. Also dachte ich, ich hätte die Commit-ID, damit ich sie unterscheiden kann.
Wenn es nicht möglich ist, die Commitid vor dem Zusammenführen abzurufen, müssen andere Ansätze überprüft werden.
Antworten
Nein, das ist nicht möglich.
Ein Commit enthält die Beschreibung von Elementen wie:
- der Autor des Commits,
- den Inhalt des Commits (die Liste der Dateien + Verzeichnisse, aus denen dieses Commit besteht),
- die Eltern des Commits
- Der Zeitstempel, zu dem das Commit erstellt wird
Der Hash eines Commits ist ein Hash all dieser Informationen. Da es nicht möglich ist, den Zeitstempel, zu dem das Commit ausgeführt wird, im Voraus zu erraten, können Sie nicht im Voraus erraten, wie dieser Hash aussehen wird.
Ich kann mir vorstellen, dass Sie diesen Hash für einige Verarbeitungszwecke verwenden möchten: Die generische Methode besteht darin, dass die Plattform, die die PR (github? Azure devops?) Behandelt, ein Skript oder einen API-Aufruf auslöst, nachdem die PR akzeptiert und zusammengeführt wurde.
Nein, dies ist unmöglich, da die genaue Zeit im Hash des Merge-Commits enthalten ist.