bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


Barra lateral

ASIX Administració de Sistemes Informàtics i Xarxes
Tots els mòduls del cicle
MP01 Implantació de sistemes operatius
Totes les UFs del modul
MP02 Gestió de bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Fonaments de maquinari
Totes les UFs del modul
MP06 Administració de sistemes operatius
Totes les UFs del modul
MP07 Planificació i administració de xarxes
Totes les UFs del modul
MP08 Serveis de xarxa i Internet
Totes les UFs del modul
MP09 Implantació d'aplicacions web
Totes les UFs del modul
MP10 Administració de sistemes gestors de bases de dades
Totes les UFs del modul
MP11 Seguretat i alta disponibilitat
Totes les UFs del modul
MP12 Formació i orientació laboral
Totes les UFs del modul
MP13 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP14 Projecte
Totes les UFs del modul
DAM Desenvolupament d’aplicacions multiplataforma
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Accés a dades
Totes les UFs del modul
MP07 Desenvolupament d’interfícies
Totes les UFs del modul
MP08 Programació multimèdia i dispositius mòbils
Totes les UFs del modul
MP09 Programació de serveis i processos
Totes les UFs del modul
MP10 Sistemes de gestió empresarial
Totes les UFs del modul
MP11 Formació i orientació laboral
Totes les UFs del modul
MP12 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP13 Projecte de síntesi
Totes les UFs del modul
MPDual Mòdul Dual / Projecte
DAW Desenvolupament d’aplicacions web
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació
Totes les UFs del modul
MP04 Llenguatge de marques i sistemes de gestió d’informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Desenvolupament web en entorn client
Totes les UFs del modul
MP07 Desenvolupament web en entorn servidor
Totes les UFs del modul
MP08 Desplegament d'aplicacions web
Totes les UFs del modul
MP09 Disseny d'interfícies web
Totes les UFs del modul
MP10 Formació i Orientació Laboral
Totes les UFs del modul
MP11 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP12 Projecte de síntesi
Totes les UFs del modul
SMX Sistemes Microinformàtics i Xarxes
Tots els mòduls del cicle
MP01 Muntatge i manteniment d’equips
Totes les UFs del modul
MP02 Sistemes Operatius Monolloc
Totes les UFs del modul
MP03 Aplicacions ofimàtiques
Totes les UFs del modul
MP04 Sistemes operatius en xarxa
Totes les UFs del modul
MP05 Xarxes locals
Totes les UFs del modul
MP06 Seguretat informàtica
Totes les UFs del modul
MP07 Serveis de xarxa
Totes les UFs del modul
MP08 Aplicacions Web
Totes les UFs del modul
MP09 Formació i Orientació Laboral
Totes les UFs del modul
MP10 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP11 Anglès
Totes les UFs del modul
MP12 Síntesi
Totes les UFs del modul
CETI Ciberseguretat en Entorns de les Tecnologies de la Informació
Tots els mòduls del cicle
vcs

VCS: Sistema de control de versions

Un sistema de control de versions (VCS: Version Control System) ens permet portar un seguiment exhaustiu dels canvis que es van produint al codi que desenvolupem. Ens ha de facilitar recuperar versions antigues dels arxius que elaborem, en cas de pèrdua o introducció d'errors durant el desenvolupament.

A l'article Git trobaràs xuleta i exercicis concrets per l'utilització pràctica d'aquest sistema de versionat hegemònic.

Referències:

Introducció

Els magatzems de codi els anomenem repositoris.

Cada cop que fem un canvi en el repositori el consolidem fent un commit. Això ens resultarà en una «foto instantània» dels arxius del repositori i solen marcar-se amb un hash que permet fer-hi referència i comprovar la seva integritat.

També ens permetrà tenir un historial de tots els canvis efectuats al repositori, consultable i recuperable en qualsevol moment.

Videotutorial per iniciar-se amb Git i Apache:


Branques

Una de les missions importants d'un VCS és la de facilitar el treball en equip. Això s'aconsegueix mitjançant la creació de branques o branches. Aquestes permeten treballar i evolucionar una versió del codi sense afectar a la resta del repositori de codi.

Exemple1: Branques d'un repositori orientades a desenvolupament amb metodologia Scrum.

Exemple2: Branques d'un repositori orientades a desplegament.

Originem una branca a partir d'un punt de versió concret o commit. A partir d'aquell moment podem fer canvis a la branca sense afectar les altres.

Quan volem incorporar els canvis fets a la branca realitzem un merge. Aquesta operació és delicada i implica refer tots els tests necessaris per assegurar-nos que el codi fusionat continua funcionant.


Centralitzat vs Distribuït

Inicialment es van fer servir sistemes de control de versions centralitzats ja que facilitaven la implementació del software VCS, però aquests no eren prou eficients en la gestió del treball en equip: quan un usuari prenia el control d'un arxiu, els altres no el podien modificar. A mes, estaves obligat a treballar en xarxa contínuament i la gestió de branques era poc flexible i complexa.

Exemples d'aquest sistema son CVS, Subversion o Razor.

En canvi, un sistema de control de versions distribuit permet treballar amb la filosofia peer to peer, és a dir, que puc descarregar els canvis de qualsevol altre usuari en qualsevol moment, sense tenir un repositori central com al cas anterior.

Exemples de sistemes de control de versions:

  • Centralitzat: CVS, Subversion (SVN)
  • Distribuït: Mercurial (Hg), Git


Git

Git és l'actual sistema de control de versions hegemònic de forma incontestable. El va crear Linus Torvalds el 2007 per al desenvolupament del nucli Linux. Tota la resta de productes han quedat totalment sobrepassats per Git. Això es deu a:

  • Codi lliure.
  • Pensat per a projectes grans.
  • Arquitectura distribuïda.
  • Rapidesa de manipulació (merges de menys d'1 segon).
  • Optimització d'ús i d'ocupació de recursos d'emmagatzemament.

Git controla contingut, no arxius. Per tant, és molt fàcil esborrar, reanomenar sense avisar a Git, i l'historial es manté :)

Algunes dades de referència (del 2009):

  • Linux Kernel constava de 22.000 arxius.
  • Mostrar les diferències de tot el Linux kernel (74.000 commits) comportava 7 segons (cold cache) o 2.3 segons (warm cache).
  • El repositori de Mozilla Project ocupava:
    • En CVS : 3GB
    • En Subversion : 12 GB
    • En Git : 300 MB

Com funciona Git

Mostrem en images com funciona Git:


Comencem desenvolupant un projecte en local.


Un segon desenvolupador fa una còpia del nostre projecte.


Cada desenvolupador segueix treballant individualment.


Els canvis de cadascun no afecten l'altre.


El desenvolupador principal descarrega els canvis que ha fet el 2n desenvolupador.


…i els barreja amb el seu projecte amb un MERGE.


Finalment, el segon desenvolupador descarrega els canvis del primer, amb els seus propis canvis integrats.




Bones pràctiques

Disposar de Git és una gran cosa, però també cal seguir unes bones pràctiques a l'hora de crear i administrar les branques.

Distribuït però centralitzat ??

Amb Git es sol utilitzar un esquema «distribuït però centralitzat», volent dir que el sistema suporta un esquema distribuït on els desenvolupadors poden descarregar-se el codi d'altres companys, però que finalment hi ha un repositori de referència (que es sol dir origin) on es deixen els canvis consolidats i testejats.

O sigui, que un determinat projecte Git pot ser centralitzat per conveniència, però no necessàriament per arquitectura, permetent els desenvolupadors treballar descentralitzadament.

Model exitós

Fa 10 anys Vincent Driessen va proposar un model de treball o workflow que encara avui es considera el de referència de forma estàndard, fins al punt que l'han anomenat «Git-flow».

En aquest article s'expliquen els diversos tipus de branques i com utilitzar-les:

  • Main branches, existeixen sempre
    • master : actualment s'ha passat a «main» per evitar nomenclatures esclavistes.
    • develop
  • Supporting branches:
    • Feature branch
    • Release branch : pre / pro
    • Hotfix branch





Primeres pràctiques amb Git

Segueix llegint l'article de Git on trobaràs exercicis pràctics i xuletes.

vcs.txt · Darrera modificació: 2021/11/19 08:56 per enrique_mieza_sanchez