ResearchMethods-ZHAW / Statistik

https://researchmethods-zhaw.github.io/Statistik/
5 stars 10 forks source link

Github Actions für Merge Requests #18

Closed DLND8 closed 9 months ago

ratnanil commented 10 months ago

Ich versuche einen Workflow hinzubekommen, der folgende Tasks erledigt:

  1. das original Quarto project in latex rendert (nicht pdf, sondern zu einem tex file).
  2. Das .tex file aus dem vorherigen Schritt staged und comitted
  3. den Pull Request merged und diese neue version ebenfall in latex rendert
  4. Das .tex file aus dem vorherigen Schritt staged und comitted
  5. mit git-latexdiff die differenz zwischen dem tex aus Schritt 1 und Schritt 2 in PDF konvertiert. git-latexdiff nimmt ein texfile sowie den SHA1 von einem commit, und visualisiert die Differenz zwischen den beiden Dokumenten mit Latex-Markup.

Dafür habe ich ein Test Repo erstellt: https://github.com/ratnanil/pull-request-action. Im Index.qmd steht: This is the original file. Im PR 16 wird dies verändert zu: This is not the original file

Lokal klappt kann ich diesen workflow wunderbar durchführen:

git init
git remote add origin https://github.com/ratnanil/pull-request-action
git pull origin main
quarto render --to latex
git add -f _book                                   # -f weil _book in gitignore ist
git commit -m "commit original"
git fetch origin pull/16/head:new-pr    
git merge new-pr
quarto render --to latex
git add -f _book
git commit -m "commit pr"
OLD=$(git rev-parse HEAD~2)                        # speichere den SHA1 des vorletzen commits (der letzte ist der merge)
git-latexdiff --main _book/book-latex/testing.tex -o diff.pdf $OLD

Das Resultat:

image

Wenn ich das ganze auf dem runner probiere, habe ich zwei Probleme:

  1. git merge new-pr funktioniert nicht. Git reklamiert: refusing to merge unrelated histories. Ich kann den merge nur durchführen, wenn ich folgendes mache: git merge --allow-unrelated-histories -s recursive -X theirs new-pr -m "merge"
  2. Das output pdf zeigt keine Differenzen an, sondern nur den neusten render (siehe diesen workflow run):

image