Salta el contingut

MP08 - UF4: Git flow i les seves branques - Activitat 1

Activitat 1

Anem a fer un exercici dirigit per a practicar el treball del git flow.

Es tracta de veure el seu funcionament. Per això crearem un projecte git nou amb l'estructura del git flow. Treballarem amb les branques main, develop i una subbranca de features.

Veurem com, treballant amb la subbranca de features, podem anar fent els canvis pertinents i, quan acabem, fusionarem la nova característica amb la branca develop i finalment fusionarem amb la branca main. També afegirem una etiqueta per tal de posar versió al nostre commit/estat.

Fixa't bé en els passos que fem i assegura't que les comandes que escrius funcionen correctament i no donen error. Una errada en una comanda i el procés no continuarà correctament.

Començarem per modificar el nostre git de manera que generi per defecte la branca main en comptes de master. Per això comprovarem el funcionament de la comanda git config amb les seves diferents opcions. git config --help

  1. Crearem un directori inicial on ens dirigirem i comprovarem la configuració:

    Solució 1

    mkdir \MVD\UF4_A1
    cd \MVD\UF4_A1
    git config --list
    

    hi ha un paràmetre que ens indica quina és la branca principal:

    git config --list | find /I "master"
    init.defaultbranch=master
    

  2. Aquest és un paràmetre del sistema, però no tindrem permisos per modificar-lo. Afegeix-lo com a paràmetre global per tal que el seu valor sigui main. Cal utilitzar la comanda git config

    Solució 2
    git config --global --add init.defaultbranch main
    
  3. Crea un projecte git i comprova que estàs a la branca main

    Solució 3
    git init
    git status
    

    hauria de sortir quelcom semblant a

    On branch main
    
    No commits yet
    
    nothing to commit (create/copy files and use "git add" to track)
    

    Per assegurar-te que tens el paràmetre ben configurat executa la comanda

    git config --list | find /I "defaultbranch"
    init.defaultbranch=master
    init.defaultbranch=main
    

    Apareix dues vegades, ja que el tenim configurat al system i a global.

    Crearem un git flow

    Però abans, per tal que el gitflow ens agafi com a nom de branca principal la main cal que amb el git fem almenys un commit a la branca main. Per això:

  4. Crea un document anomenat README.md amb el contingut Prova, afegeix-lo al projecte i fes-ne un commit amb el comentari "Commit Inicial".

    Solució 4
    echo Prova > README.md
    git add *
    git commit -m "Commit Inicial"
    
  5. Ara ja podem crear el git flow. Podem fer-ho sense que ens demani res, agafant els valors per defecte, esbrina com i executa la comanda que crea un git flow inicial.

    Solució 5
    git flow init -d
    

    Treballem amb branques

    El més normal és treballar amb subbranques de features, release, hotfix. No solem treballar ni sobre la branca main ni sobre la branca develop. Per tant ...

  6. Crea una subbranca nova dins la branca features. L'anomenarem amb el teu nom. Utilitza les comendes de git flow, ja que ho fan tot molt més fàcil. Comprova que estàs a la branca feature/nomAlumne

    Solució 6
    git flow feature start nomAlumne
    git status
    

    T'hauria de sortir quelcom semblant a

    develop
    * feature/nomAlumne
    main
    

    indicant que et trobes a la branca feature/nomAlumne.

    Afegirem un fitxer per tal de poder fer quelcom amb aquesta branca i després fusionar-la amb la branca develop.

  7. Afegeix un fitxer inici.php amb el següent contingut:

    <?php 
        echo "Fitxer <span style='font-family: courier,monospace'>inici.php</span> per provar la gestió de versions";
    ?>
    
    Solució 7
    notepad inici.php
    

    Hi copiem el codi font i desem.

  8. Comprovem el que hem de fer (status) i:

    1. afegim el nou document al repositori

    2. fem un commit amb el comentari "Fitxer inici.php".

    Solució 8
    git status
    git add *
    git commit -m "Fitxer inici.php"
    git status
    

    Ja tenim el primer treball fet, ara el que farem és finalitzar aquesta branca de manera que el git flow ens farà la fusió i ens eliminarà la branca que hem estat desenvolupant. Tot amb una sola comanda que ja t'havia comentat el sistema quan has creat la subbranca a features.

  9. Finalitza la branca amb la comanda del git flow i comprova que estàs a la branca develop i tens el fitxer inici.php. Si vols, abans, pots entrar a la branca develop i comprovar que no tens el fitxer.

    Comprovem la branca develop

    git branch
    dir *.*
    git switch develop
    dir *.*
    git switch feature/nomAlumne
    dir *.*
    

    Ara finalitza la branca feature/nomAlumne

    Solució 9
    git flow feature finish nomAlumne
    

    que deu produir una sortida semblant a

    Switched to branch 'develop'
    Updating 20391f2..3d9fbe3
    Fast-forward
    inici.php | 3 +++
    1 file changed, 3 insertions(+)
    create mode 100644 inici.php
    Deleted branch feature/nomAlumne (was 3d9fbe3).
    
    Summary of actions:
    - The feature branch 'feature/nomAlumne' was merged into 'develop'
    - Feature branch 'feature/nomAlumne' has been locally deleted
    - You are now on branch 'develop'
    

    Si fas la comprovació de la branca on ets i dels fitxers actuals veuràs com estàs a la branca develop i tens els fitxers inici.php i README.md.

    git status
    On branch develop
    nothing to commit, working tree clean
    
    dir
    DD/MM/YYYY  HH:mm               128 inici.php
    DD/MM/YYYY  HH:mm                10 README.md
    
  10. Afegirem una etiqueta (tag) a la versió actual de release. En concret la 1.0.0.

    Abans de res comprovarem que no tenim cap tag amb la comanda

    git tag
    

    Solució 10

    i ara amb la comanda

    git tag -a v1.0.0 -m "Afegim l'etiqueta: v1.0.0"
    

    afegirem l'etiqueta corresponent. Comprova que s'ha creat amb:

    git tag 
    git log --oneline
    
  11. Per acabar fusionarem la branca develop amb la main de manera que aquestes dues seran iguals i ja tindrem la primera versió publicada a la branca main.

    Solució 11

    git branch main
    git merge develop
    git log --oneline
    

    La sortida prevista és

    3d9fbe3 (HEAD -> main, tag: v1.0.0, develop) Fitxer inici.php
    20391f2 fitxer Inicial
    

A partir d'aquí et proposo fer la Segona activitat, que no tindrà solucions, i en penges captures a la tasca corresponent del moodle.

Segona activitat