Results 1 to 7 of 7

Thread: Achterhalen van een specifieke commit uit FPC

  1. #1

    Achterhalen van een specifieke commit uit FPC

    Sorry alweer een git gerelateerde vraag...

    Stel... ik wil weten welke commits er hebben plaatsgevonden op een bepaalde file tussen twee versie releases uit de FPC source-tree (dat is het uiteindelijke doel).

    fwiw: Getoonde opdrachten gebaseerd op daadwerkelijke praktijk dus kunnen worden gebruikt als controle of anderzijds.

    Voor het achterhalen welke veranderingen er hebben plaatsgevonden tussen twee releases:
    Code:
    git diff release_3_2_0..release_3_2_2
    Maar da's een beetje teveel van het goede en daarnaast wil ik ook niet alles weten.

    Dus ik beperk de boel door alleen die bestanden te tonen die veranderd zijn tussen de twee releases en filter die op een specifiek onderwerp of platform, bijvoorbeeld

    Code:
    git diff --name-only release_3_2_0..release_3_2_2 | grep win
    Dat toont mij dan een mooi lijstje, dat ik weer kan gebruiken om of verder te filteren of anders nader te onderzoeken.

    Stel, dat daar uitkomt dat ik (verdere) interesse heb in het bestand "rtl/win/syswin.inc" en wil weten welke commit(s) op dat bestand hebben plaatsgevonden (merk op: tussen de releases)
    Code:
    git log --follow release_3_2_0..release_3_2_2 -- rtl/win/syswin.inc
    Daar volgt dan uit:
    Code:
    commit 74a1b6406e9342698462d0322ea3a7cd474bfc71
    Author: svenbarth <e-mail>
    Date:   Thu Dec 17 22:44:26 2020 +0000
    
        --- Merging r45159 into '.':
        U    rtl/nativent/systhrd.inc
        U    rtl/os2/systhrd.inc
        U    rtl/win/systhrd.inc
        --- Recording mergeinfo for merge of r45159 into '.':
         U   .
        --- Merging r45160 into '.':
        U    rtl/amicommon/athreads.pp
        U    rtl/beos/bethreads.pp
        U    rtl/inc/thread.inc
        U    rtl/inc/threadh.inc
        G    rtl/nativent/systhrd.inc
        U    rtl/netware/systhrd.inc
        U    rtl/netwlibc/systhrd.inc
        U    rtl/objpas/classes/classes.inc
        U    rtl/objpas/classes/classesh.inc
        G    rtl/os2/systhrd.inc
        U    rtl/unix/cthreads.pp
        G    rtl/win/systhrd.inc
        --- Recording mergeinfo for merge of r45160 into '.':
         G   .
        --- Merging r45206 into '.':
        U    rtl/win/sysos.inc
        G    rtl/win/systhrd.inc
        U    rtl/win/syswin.inc
        --- Recording mergeinfo for merge of r45206 into '.':
         G   .
        --- Merging r45207 into '.':
        U    rtl/linux/pthread.inc
        --- Recording mergeinfo for merge of r45207 into '.':
         G   .
        --- Merging r45233 into '.':
        G    rtl/linux/pthread.inc
        G    rtl/unix/cthreads.pp
        --- Recording mergeinfo for merge of r45233 into '.':
         G   .
        --- Merging r45237 into '.':
        G    rtl/unix/cthreads.pp
        G    rtl/win/systhrd.inc
        --- Recording mergeinfo for merge of r45237 into '.':
         G   .
        
        git-svn-id: branches/fixes_3_2@47806 -
    En dan loop ik vast op het achterhalen van de daadwerkelijke commit message(s).....

    Ik begrijp eruit dat ik verder moet zoeken in r45206 .... maar hoe dan ?

    Of kan dit hele process om de commit messages van een bepaald bestand (wat voldoet aan bepaalde filter-criteria) te verkrijgen ook nog op een eenvoudigere manier worden gerealiseerd ?

    Het uiteindelijke doel is om het geheel te automatiseren: dus dat van alle bestanden waar interesse voor is, alle gerelateerde commit messages zichtbaar worden zodat er een history van commit messages voor deze bestanden kan worden geproduceerd.

    bvd
    Last edited by GolezTrol; 25-Jul-22 at 20:05.
    Iedereen wist dat het onmogelijk was. Behalve dan die ene dwaas die dat niet helemaal goed had begrepen en het toch deed.

  2. #2
    Het lijkt erop dat die commit (met SHA 74a1b6406e9342698462d0322ea3a7cd474bfc71) daadwerkelijk de enige commit is die in die tussentijd heeft plaatsgevonden waarin ook die file is aangepast.

    D.w.z., binnen die tijdlijn, het pad tussen de twee releases. Die commit bevat vast wijzigingen uit een andere tak die op de een of andere manier zijn samengevoegd, maar ik zie niet hoe die nog terug te vinden zijn. Het lijkt ook geen echte merge te zijn, maar gewoon een commit met een beschrijving van wat er allemaal in zit.
    Alsof iemand gewoon de aanpassingen erin heeft gekopieerd en dat gecommit.

    Die labels zoals 'r45159', zijn ook nergens anders terug te vinden.
    1+1=b

  3. #3
    Dank GolezTrol.

    Ik dacht dat het aan mij lag dat ik niet verder kom.

    Ik kan inderdaad begrijpen dat de daadwerkelijke commit (die ik zoek en) die in deze merge is samengevoegd niet terug te vinden is in deze tijdlijn (dwz tussen de beide releases).

    Ik ging er daarom vanuit dat ik deze specifieke commit terug zou kunnen vinden middels r45206, maar heb ik daar geen enkele verwijzing van terug kunnen vinden.

    Dat heeft waarschijnlijk (denk ik dan maar) te maken met de overgang van svn naar git.

    Ik heb (tevergeefs) nog met de hand proberen te zoeken in de fixes_3_2 branch.

    Ik zou zeggen: "lekker dan", "dat heb ik weer" en "git-handig"

    Dan concludeer ik maar dat het bijvoorbeeld dus onmogelijk is om de verantwoordelijke van een commit die de boel vernaggeld heeft terug te kunnen vinden
    Iedereen wist dat het onmogelijk was. Behalve dan die ene dwaas die dat niet helemaal goed had begrepen en het toch deed.

  4. #4
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,342
    Het is een merge in SVN tijden. Hier is een mapping van oude SVN revisies naar git hashes.

  5. #5

    Thumbs up

    Dank u wel marcov.

    Dat is een zeer handige lijst, mede omdat het mijn stupiditeit weer eens goed naar voren brengt

    De lijst laat zien dat 45206 gemapped is naar/als commit met sha 68d743a83eba746c9c9bbf9523684848e2307a9b

    Om uit te zoeken in welke branch deze commit zit verstopt:
    Code:
    git branch --contains 68d743a83eba746c9c9bbf9523684848e2307a9b
    En kan ik dan weer tonen met:
    Code:
    git show 68d743a83eba746c9c9bbf9523684848e2307a9b
    En kwam ik er dus achter ... :facepalm:

    Dat ik al die tijd op zoek was naar r45206.... maar het moet zijn:
    Code:
    git log --all --grep='trunk@45206'
    Nogmaals dank. Nu kan ik weer verder met m'n projectje.

    PS: ik zien dat ik mijn originele post niet meer kan aanpassen en zag dat ik daar een meel-adres had mee-gekopieerd. Misschien dat een mod zo vriendelijk zou willen zijn om het mail-adres van pascaldragon weg te halen uit de laatste quote van mijn eerste post ? Onder het mom van niet makkelijker maken dan dat de dingen al zijn.
    Last edited by flabber; 25-Jul-22 at 17:08. Reason: mail adres verwijderingsverzoek
    Iedereen wist dat het onmogelijk was. Behalve dan die ene dwaas die dat niet helemaal goed had begrepen en het toch deed.

  6. #6
    Quote Originally Posted by flabber View Post
    PS: ik zien dat ik mijn originele post niet meer kan aanpassen en zag dat ik daar een meel-adres had mee-gekopieerd. Misschien dat een mod zo vriendelijk zou willen zijn om het mail-adres van pascaldragon weg te halen uit de laatste quote van mijn eerste post ? Onder het mom van niet makkelijker maken dan dat de dingen al zijn.
    Gedaan
    1+1=b

  7. #7
    Dank u.

    Ik zal proberen beter op te letten zodat het niet nog eens gebeurt.
    Iedereen wist dat het onmogelijk was. Behalve dan die ene dwaas die dat niet helemaal goed had begrepen en het toch deed.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •