Laboratori 5: Calculadora col·laborativa

Configurant Github

Crea un compte a GitHub: Si no tens un compte a GitHub, visita https://github.com/ i crea un compte gratuït.

Genera un token d’accés personal

  1. Inicia la sessió al teu compte de GitHub en el navegador web.
  2. Fes clic a la teva foto de perfil a la cantonada superior dreta i selecciona Configuració al menú desplegable.
  3. A la pàgina de configuració de GitHub, selecciona Configuració de desenvolupador al menú lateral esquerre.
  4. A la secció Tokens personals, fes clic a Genera un token personal i selecciona un Token (clássic) per a l’ús amb la línia de comandes.

Generar token

En aquest punt completa la informació requerida i fes clic a Generar token:

  1. Introdueix un nom per al teu token.
NotaPer exemple:

Token per a la màquina virtual del curs 2526 de Sistemes Operatius

  1. Selecciona els permisos que necessites per al teu token. Per a la majoria de les operacions bàsiques, com ara clonar repositoris i fer push, necessitaràs almenys els permisos següents:
    • repo (per accedir als repositoris privats i públics)
    • workflow (per executar workflows de GitHub Actions)
    • write:packages (per pujar paquets a GitHub Packages)
  2. Selecciona una data de caducitat per al teu token. És recomanable establir una data de caducitat per motius de seguretat.
NotaPer exemple:

Pots seleccionar Custom i posar fins al 01/02/2026 on ja haurà acabat el curs.

Configuració de l’accés a GitHub des de la màquina virtual

  1. Inicia una sessió a la terminal de la màquina virtual com a usuari normal.

  2. Configura Git per utilitzar el token de GitHub executant la següent comanda:

    git config --global github.token TOKEN
    ConsellImportant:

    Assegura’t de substituir TOKEN pel token d’accés personal que has generat a GitHub. Això emmagatzemarà el token de GitHub en la configuració global de Git al teu sistema Debian.

  3. Verifica que el token s’hagi configurat correctament executant:

    git config --global --get github.token

Si tot ha anat bé, veuràs el token que has configurat a la sortida d’aquesta comanda.

AlertaNota:

Github ja no permet l’ús de contrasenyes per a operacions Git que requereixen autenticació. En lloc d’això, has de fer servir un token d’accés personal (PAT) per autenticar-te quan fas operacions com git push o git pull en repositoris remots. Per tant, és important que utilitzis el token d’accés personal que has generat en lloc de la teva contrasenya habitual quan se’t demani autenticació des d’una línia de comandes o des d’un IDE com VSCode.

Tasques

Creació d’equips

  1. Formeu equips de 3 persones. Cada grup haurà d’escollir un líder, que serà el responsable de coordinar el treball, gestionar el repositori i fer el seguiment del projecte.

  2. Trieu un nom d’equip original.

Preparació del projecte

Enllaç de la tasca a GitHub Classroom: https://classroom.github.com/a/bxb1jFbT

  1. El líder de l’equip haurà d’iniciar el grup a través de GitHub Classroom.

    • Introdueix el nom de l’equip.

    • Accepta la tasca.

    • Un cop acceptada la tasca, es crearà un repositori per a l’equip.

  2. La resta de membres s’hi podran unir seleccionant el nom de l’equip al mateix enllaç https://classroom.github.com/a/bxb1jFbT.

  3. El repositori base contindrà el codi inicial necessari i la seva estructura.

  4. El líder és responsable d’assignar les tasques a cada membre mitjançant issues a GitHub.

    Per fer-ho:

    1. Fer clic a la pestanya Issues.

    2. Fer clic a New issue, i seleccionar Feature request.

    3. Us he preparat una plantilla per a les issues. Feu clic a Get started.

    4. Omplir el títol i la descripció de la tasca.

    5. Assignar la tasca a un membre de l’equip. Click a Assignees i seleccionar el membre.

    6. Un cop assignada la tasca, fer clic a Submit new issue.

    Llista de tasques i assignació:

    Tasca Assignat a
    Implementació de la funció de suma líder
    Implementació de la funció de resta líder
    Implementació de la funció de multiplicació membre1
    Implementació de la funció de divisió membre1
    Implementació de la funció de potència membre2
    Implementació de la funció de arrels quadrades membre2

Treball individual

Instal·la el paquet build-essential, que inclou les eines i llibreries necessàries per compilar i construir programes en C. Aquest paquet inclou el compilador GCC, que és comunament utilitzat per programar en C.

apt install build-essential -y
  1. Cada membre de l’equip haurà de clonar el repositori al seu ordinador i crear una branca develop per les seves tasques.

    git clone URL_DEL_REPOSITORI
    cd NOM_DEL_REPOSITORI
Nota

Si feu clic a Code al repositori, podreu copiar la URL del repositori.

ConsellRecomanació:

Tanqueu la sessió de VSCode i torneu-la a obrir però indicant la ruta a la carpeta del projecte. En el meu cas, seria /home/jordi/test/projecte-0-calculadora-teacher. D’aquesta manera, podreu utilitzar les eines de VSCode per a desenvolupar el projecte.

  1. Per cada tasca assignada, el membre haurà de crear una branca amb el nom de la tasca. Per exemple, si la tasca és implementar la funció de suma, la branca es podria anomenar feature-suma.

    git checkout -b feature-suma

    Observeu que VSCode us mostra la branca actual a la part inferior esquerra.

  1. El codi de la funció suma podria ser:

    // calc.c
    int suma(int a, int b) {
        return a + b;
    }
    // calc.h
    int suma(int a, int b);
  2. Reviseu el fitxer src/main.c per a cridar la funció sumacorrectament de la llibreria calc.

  3. Compileu el codi i comproveu que funciona correctament.

    make
    ./bin/calc

ConsellNota:

Si tot funciona correctament, el codi s’executarà i mostrarà el resultat de la suma.

  1. Un cop finalitzada la tasca, fer un commit amb els canvis realitzats indicant la tasca realitzada. Teniu dos opcions per fer el commit:

    • Amb les eines de VSCode: Feu clic a la icona de la branca a la part inferior esquerra i seleccioneu Commit. Després, introduïu el missatge de commit i confirmeu-lo.

    • Amb la terminal.

      git add src/calc.c src/calc.h src/main.c
      git commit -m "@feat: Implementació de la funció de suma"

Alerta

Si no feu git add abans de fer el commit, no es pujaran els canvis al repositori. Així que assegureu-vos de fer git add abans de fer el commit.


Consell

Utilitza els missatges de commit per tancar les issues relacionades amb la tasca. Per exemple, si la tasca és implementar la funció de suma, el missatge de commit podria ser: git commit -m "@feat: Implementació de la funció de suma. Closes #1". Si la tasca 1 és la implementació de la funció de suma.

Repeteix els passos 2 i 3 per a cada tasca assignada. Sempre creant la branca des de main. Per tornar a la branca main, feu git checkout main. O bé, click a la branca a la part inferior esquerra de VSCode i seleccioneu main. Un cop finalitzades les seves tasques ajuntarem totes les branques a la nostra branca local main.

git checkout -b main
git merge feature-suma 

AlertaImportant:

Si hi ha conflictes, caldrà resoldre’ls abans de fer el commit.

  • Per fer-ho amb VSCode, farem clic a la icona de la branca a la part inferior esquerra i seleccionarem Merge branch into current.
  • Seleccioneu la branca a ajuntar.
  • Quan integreu la segona funcionalitat (resta, multiplicació, etc.), caldrà fer un merge ja que es detectaran conflictes.
  • Un dels conflictes es el fitxer calc.c. Cada branca ha modificat aquest fitxer i caldrà resoldre els conflictes. Acceptant els canvis de les dues branques. Podeu fer-ho manualment o amb el resolutor de conflictes de VSCode.
  • Repetiu el mateix procediment per tots els conflictes que apareguin.
  • Un cop resolts els conflictes, feu un commit amb el missatge @feat: Merge branch feature-resta.

ConsellNota:

En aquest punt, cada membre de l’equip haurà de tenir implementades les seves tasques (resta, multiplicació, divisió, potència i arrels quadrades), per poder després ajuntar-les a la branca main. Es important editar els fitxers calc.c i calc.h i també el fitxer main.c per a cridar les funcions correctament.

Ajuntar les tasques

  1. Un cop totes les tasques estiguin implementades i ajuntades a la branca main, caldrà testar que el codi funciona correctament.

  2. Aquestes tasques estaràn en la branca main del repositori local. Ara caldrà pujar aquestes tasques al repositori remot.

    • Crea a GitHub una branca remota anomenada develop-<nom-usuari> i la vincularem amb la branca main local. Branca develop

    Primer, caldrà actualitzar les branques remotes del repositori.

    git fetch origin

    Un cop actualitzades les branques remotes, caldrà fer un push de la branca main a la branca develop-<nom-usuari>.

    git push origin main:develop-<nom-usuari>
  3. Un cop pujades totes les tasques al repositori remot, el líder actualitzarà les branques remotes de tots els membres de l’equip.

    git fetch origin
  4. Fara un merge de totes les tasques a la seva branca main.

  5. Finalment, testeu que el codi funciona correctament.

  6. Un cop testejat, caldrà pujar la branca main al repositori remot.

    git push origin main

Documentació

  1. Editeu el fitxer README.md i afegiu una breu descripció del projecte, el nom dels membres de l’equip i una captura de pantalla de la calculadora en funcionament.
  2. Afegiu també les instruccions per a compilar i executar el projecte.

Podeu consultar la documentació de GitHub sobre com escriure aquest tipus de documents https://docs.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax.

Exercici Extra (opcional)

Podeu intentar superar els nivells del joc Learn Git Branching per practicar més les vostres habilitats amb Git. Centreu-vos en els exercicis REMOTE.