bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


vcs

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
vcs [2021/10/14 14:53]
enrique_mieza_sanchez [VCS: Sistema de control de versions]
vcs [2023/09/26 15:33] (actual)
enric_mieza_sanchez
Línia 1: Línia 1:
 +~~REVEAL~~
 ====== VCS: Sistema de control de versions ====== ====== VCS: Sistema de control de versions ======
  
Línia 11: Línia 12:
   * [[https://cacauet.org/wiki/index.php/Git:_comandes|Resum de comandes Git]]   * [[https://cacauet.org/wiki/index.php/Git:_comandes|Resum de comandes Git]]
  
-{{tag> #Daw #DawMp08 #DawMp08Uf4 #DawMp08Uf04 #DawMp05 #DawMp05Uf2 #DawMp05Uf02 #Dam #DamMp05 #DamMp05Uf2 #DamMp05Uf02 #Ciber #CiberMp03 #Ceti #CetiMp03 git cvs vcs versions subversion svn }}+{{tag> #Daw #DawMp08 #DawMp08Uf4 #DawMp08Uf04 #DawMp05 #DawMp05Uf2 #DawMp05Uf02 #Dam #DamMp05 #DamMp05Uf2 #DamMp05Uf02 #Ciber #CiberMp03 #Ceti #CetiMp03 git cvs vcs versions subversion svn DevOps }}
  
 ===== Introducció ===== ===== Introducció =====
Línia 18: Línia 19:
  
 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. 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.
 +
 +{{ commits.png }}
  
 També ens permetrà tenir un **historial** de tots els canvis efectuats al repositori, consultable i recuperable en qualsevol moment. També ens permetrà tenir un **historial** de tots els canvis efectuats al repositori, consultable i recuperable en qualsevol moment.
  
 +==== Videotutorial ====
 Videotutorial per iniciar-se amb Git i Apache: Videotutorial per iniciar-se amb Git i Apache:
 {{youtube>YpSaqTe9M2E}} {{youtube>YpSaqTe9M2E}}
  
 \\ \\
- 
  
 ===== Branques ===== ===== 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. 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.
 +
 +{{ branch-scrum.gif?direct }}
  
 Exemple1: Branques d'un repositori orientades a desenvolupament amb metodologia Scrum. Exemple1: Branques d'un repositori orientades a desenvolupament amb metodologia Scrum.
-{{ branch-scrum.gif?direct&400 }} 
  
-Exemple2: Branques d'un repositori orientades a desplegament. +===== Branques orientades a desplegament ===== 
-{{ branches6.png?direct&400 }}+Habitualment tindrem, com a mínim, 3 branques: dev, pre i pro 
 + 
 +{{ branches6.png?direct }}
  
 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. 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**.+===== Merge: fusió de branques ===== 
 + 
 +Quan volem incorporar els canvis fets d'una branca una altra realitzem un **//merge//**.
  
-{{ vcs-merge.png?direct&400 }}+**Aquesta operació és delicada i implica refer tots els tests necessaris per assegurar-nos que el codi fusionat continua funcionant**.
  
 +{{ vcs-merge.png?direct }}
  
 \\ \\
Línia 51: Línia 59:
 Exemples d'aquest sistema son CVS, Subversion o Razor. Exemples d'aquest sistema son CVS, Subversion o Razor.
  
-{{vcs-centralitzat.png?300}} {{vcs-distribuit.png?300}}+{{ vcs-centralitzat.png }}
  
-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.+Per exemeple, quan un desenvolupador havia d'editar un arxiu, el bloquejava i els altres usuaris no el podien escriure, només llegir-ho. 
 + 
 +===== VCS distribuït ===== 
 + 
 +{{ vcs-distribuit.png }} 
 + 
 +En canvi, un **sistema de control de versions distribuït** 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: Exemples de sistemes de control de versions:
Línia 71: Línia 85:
 Git controla contingut, no arxius. Per tant, és molt fàcil esborrar, reanomenar sense avisar a Git, i l'historial es manté :) Git controla contingut, no arxius. Per tant, és molt fàcil esborrar, reanomenar sense avisar a Git, i l'historial es manté :)
  
 +\\
 +
 +===== Git (2) =====
 Algunes dades de referència (del 2009): Algunes dades de referència (del 2009):
   * Linux Kernel constava de 22.000 arxius.   * Linux Kernel constava de 22.000 arxius.
Línia 79: Línia 96:
     * En Git : 300 MB     * En Git : 300 MB
  
 +\\
  
-==== Com funciona Git ==== +===== Com funciona Git ===== 
-Mostrem en images com funciona Git:+Mostrem en imatges com funciona Git:
  
-----+{{ git1.png?600 }}
  
-{{git1.png }} 
 Comencem desenvolupant un projecte en local. Comencem desenvolupant un projecte en local.
  
-----+Prem abaix per seguir la seqüència:
  
-{{ git2.png}}+==== Clonació ==== 
 Un segon desenvolupador fa una còpia del nostre projecte. Un segon desenvolupador fa una còpia del nostre projecte.
  
-----+{{ git2.png?600 }}
  
-{{git3.png }}+==== Afegint codi ====
 Cada desenvolupador segueix treballant individualment. Cada desenvolupador segueix treballant individualment.
  
-----+{{ git3.png?600 }}
  
-{{ git4.png}}+==== Més codi ====
 Els canvis de cadascun no afecten l'altre. Els canvis de cadascun no afecten l'altre.
  
----- +{{ git4.png?600 }}
- +
-{{git5.png }}+
  
 +==== Fetch ====
 El desenvolupador principal descarrega els canvis que ha fet el 2n desenvolupador. El desenvolupador principal descarrega els canvis que ha fet el 2n desenvolupador.
  
-----+{{ git5.png?600 }}
  
-{{ git6.png}} +==== Merge ==== 
-...i els barreja amb el seu projecte amb un MERGE.+Combina els canvis amb el seu projecte amb un MERGE.
  
-----+{{ git6.png?600 }}
  
-{{git7.png }}+==== Fetch (2) ====
 Finalment, el segon desenvolupador descarrega els canvis del primer, amb els seus propis canvis integrats. Finalment, el segon desenvolupador descarrega els canvis del primer, amb els seus propis canvis integrats.
  
----- +{{ git7.png?600 }}
- +
-\\ +
  
 \\ \\
Línia 129: Línia 142:
 Disposar de Git és una gran cosa, però també cal seguir unes bones pràctiques a l'hora de crear i administrar les branques. 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 **"distribuït però centralitzat"** es vol dir que el sistema suporta un esquema distribuït on els desenvolupadors poden descarregar-se el codi d'altres companys, però finalment **hi ha un repositori de referència que es sol dir //origin//**, on es deixen els canvis consolidats i testejats.
  
-==== Distribuït però centralitzat ?? ====+Un projecte en Git pot ser centralitzat per conveniència, però no per arquitectura, permetent els desenvolupadors treballar descentralitzadament.
  
-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.+{{ centr-decentralized-vcs.png?direct&650 }}
  
-O sigui, que un determinat projecte Git pot ser centralitzat per conveniència, però no necessàriament per arquitectura, permetent els desenvolupadors treballar descentralitzadament. 
  
-{{centr-decentralized-vcs.png?direct&450}} +===== Model exitós: git-flow =====
- +
- +
-==== Model exitós ====+
 Fa 10 anys [[https://nvie.com/posts/a-successful-git-branching-model/|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"**. Fa 10 anys [[https://nvie.com/posts/a-successful-git-branching-model/|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"**.
  
 +{{ hotfix-branches.png?500 }}
  
-{{ hotfix-branches.png?250}} +===== Caraterístiques del "git-flow" ===== 
-En aquest article s'expliquen els diversos tipus de branques i com utilitzar-les: +A l'[[https://nvie.com/posts/a-successful-git-branching-model/|article de git-flow de Driessen]] s'expliquen els diversos tipus de branques i com utilitzar-les: 
-  * **Main branches**, existeixen sempre +  * Main branches, existeixen sempre 
-    * **master** : actualment s'ha passat a "main" per evitar nomenclatures esclavistes. +    * **main** : abans es deia "master", però s'ha canviat a "main" per evitar nomenclatures esclavistes. 
-    * **develop** +    * **develop** : mes coneguda per **dev** 
-  * **Supporting branches**: +  Supporting branches
-    * Feature branch +    * Feature branch : noves funcionalitats 
-    * Release branch : pre / pro +    * Release branch : **pre** (preproducció) **pro** (production) 
-    * Hotfix branch +    * Hotfix branch : per solucionar //bugs//.
- +
-\\ +
- +
-\\ +
- +
-\\+
  
 \\ \\
vcs.1634223185.txt.gz · Darrera modificació: 2021/10/14 14:53 per enrique_mieza_sanchez