ottenere l'hash del commit git future prima che il PR venga unito [duplicato]

Oct 19 2020

Ho uno scenario specifico. Ho sollevato un PR. Ci sono più commit in questo PR.

Ora ho bisogno di ottenere l'hash del commit, che verrà generato dopo aver unito questo PR al master. È possibile ottenere l'hash del commit prima di unirlo?

supponiamo che un componente dell'applicazione sia: xyz

  1. abbiamo creato un PR per quel ramo di funzionalità per padroneggiare jenkins -> inizia la compilazione PR -> distribuire l'applicazione su un nodo -> il plugin jacoco nell'applicazione crea un file exec

  2. L'unione delle PR è avvenuta dalla build principale -> nessuna distribuzione per CC ora ...

  3. Al termine della distribuzione, da un luogo separato viene attivato il lavoro di copertura CC -> che prenderà il file exec e invierà al sonar.

  4. qui stavo cercando di renderlo come ... il nome del file exec avrà <Future_git_commit_hash> _xyz.exec

  5. nel lavoro di copertura CC, verificherò questo commit_id .. e poi spingerò a sonar. (qui generalmente non abbiamo bisogno di commit_id, solo master possiamo fare il checkout e spingere al sonar) ...

il problema si verifica se: prima di spingere al sonar, viene nuovamente alzato un altro PR. e viene creato un nuovo file exec. quindi stavo pensando di avere l'ID di commit in modo da poter differenziare.

comunque se ottenere il commitid prima della fusione non è possibile .. è necessario controllare altri approcci.

Risposte

1 LeGEC Oct 19 2020 at 08:30

No, non è possibile.

Un commit contiene la descrizione di elementi come:

  1. l'autore del commit,
  2. il contenuto del commit (l'elenco dei file + directory che compongono questo commit),
  3. i genitori del commit
  4. il timestamp in cui viene creato il commit

L'hash di un commit è un hash di tutte queste informazioni. Poiché non è possibile indovinare in anticipo il timestamp in cui si verificherà il commit, non è possibile indovinare in anticipo quale sarà l'hash.


Immagino che tu voglia usare questo hash per alcune elaborazioni: il modo generico è fare in modo che la piattaforma che gestisce il PR (github? Azure devops?) Attivi uno script o una chiamata api dopo che il PR è stato accettato e unito.

1 RomainValeri Oct 19 2020 at 08:30

No, questo è impossibile, poiché l'ora esatta verrà inclusa nell'hash del commit di unione.