Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:teme:folosire-gitlab [2019/02/24 19:43]
liza_elena.babu [Folosire Git]
so:teme:folosire-gitlab [2022/03/11 20:00] (current)
ionut.mihalache1506
Line 78: Line 78:
   - Adăugați URL-ul specific repo-ului de teme de SO ce va conține scheletele de cod pentru fiecare temă și testele:   - Adăugați URL-ul specific repo-ului de teme de SO ce va conține scheletele de cod pentru fiecare temă și testele:
     - click pe ''​Import existing repository by URL''​     - click pe ''​Import existing repository by URL''​
-    - adăugați link-ul https://​github.com/​systems-cs-pub-ro/​so-assignments.git+    - adăugați link-ul https://​github.com/​systems-cs-pub-ro/​so.git 
 +    - în directorul assignments vor fi toate fișierele de care aveți nevoie
   - Click ''​Create project''​.   - Click ''​Create project''​.
   - După ce proiectul a fost creat, selectați tab-ul ''​Members''​ din cadrul acestui proiect (left side)   - După ce proiectul a fost creat, selectați tab-ul ''​Members''​ din cadrul acestui proiect (left side)
-    - adăugați ​următorii ​useri: Mihai Bărbulescu (3172), Adrian Șendroiu (1701), Răzvan Tudor Crainea, Vladimir Diaconescu, Costin Lupu, Iustin Dumitrescu, Alexandru Jercăianu, George Muraru, ​Alex MoregaBogdan Purcăreață (2086+    ​<​hidden>​- adăugați useri corespunzători: Mihai Bărbulescu (3172), Adrian Șendroiu (1701), Răzvan Tudor Crainea, George Muraru, ​Adrian-Mirel LUŢANGabriel BERCARU (78505), Ionuț MIHALACHE (87724)</​hidden>​ 
-    - dați-le dreptul de access ''​Reporter''​+    - adăugați useri corespunzători(cineva din subechipa de teme pe baza username-ului de pe Microsoft Teams
 +    - dați-le dreptul de access ''​Maintainer''​
     - click pe ''​Add users to project''​     - click pe ''​Add users to project''​
  
Line 97: Line 99:
  
 Dacă aveți doar 1-multi în acest repo, pentru a adăuga 2-minishell puteți proceda astfel: Dacă aveți doar 1-multi în acest repo, pentru a adăuga 2-minishell puteți proceda astfel:
-<​code>​ +<​code ​bash
-git clone ... +git clone ... 
-cd l3-so-assignments +cd l3-so-assignments 
-mkdir -p 2-minishell/​ +mkdir -p 2-minishell/​ 
-cd 2-minishell/​ +cd 2-minishell/​ 
-wget http://​ocw.cs.pub.ro/​courses/​_media/​so/​teme/​2-skel-linux.zip +wget http://​ocw.cs.pub.ro/​courses/​_media/​so/​teme/​2-skel-linux.zip 
-unzip 2-skel-linux.zip +unzip 2-skel-linux.zip 
-rm -fr 2-skel-linux.zip +rm -fr 2-skel-linux.zip 
-wget http://​elf.cs.pub.ro/​so/​res/​teme/​tema2-checker-lin.zip +wget http://​elf.cs.pub.ro/​so/​res/​teme/​tema2-checker-lin.zip 
-unzip tema2-checker-lin.zip # testele sunt dezarhivate în folderul tema2-checker-lin/​ +unzip tema2-checker-lin.zip # testele sunt dezarhivate în folderul tema2-checker-lin/​ 
-rm -fr tema2-checker-lin.zip +rm -fr tema2-checker-lin.zip 
-mkdir checker-lin +mkdir checker-lin 
-mv tema2-checker-lin/​* checker-lin/​ +mv tema2-checker-lin/​* checker-lin/​ 
-rmdir tema2-checker-lin +rmdir tema2-checker-lin 
-cd ../ +cd ../ 
-git add 2-minishell/​ +git add 2-minishell/​ 
-git commit -m "add Linux skeleton and tests"​ +git commit -m "add Linux skeleton and tests"​ 
-git push+git push
 </​code> ​ </​code> ​
  
Line 164: Line 166:
   * http://​gitimmersion.com/​   * http://​gitimmersion.com/​
  
-<​hidden>​ 
  
-===== Folosire ​git =====+===== Mic tutorial de folosire ​git =====
  
 Pentru a înțelege mai ușor cum și mai ales de ce e bine să folosim ''​git'',​ e cel mai bine să urmărim un exemplu concret. Scenariul propus este de fapt flow-ul de lucru pe care îl urmați la orice temă (nu doar la SO): sunt singur, lucrez la temă, am nevoie de un singur branch și nu vreau să pierd o variantă, să zicem incompletă,​ dar corectă, de temă. ​ Pentru a înțelege mai ușor cum și mai ales de ce e bine să folosim ''​git'',​ e cel mai bine să urmărim un exemplu concret. Scenariul propus este de fapt flow-ul de lucru pe care îl urmați la orice temă (nu doar la SO): sunt singur, lucrez la temă, am nevoie de un singur branch și nu vreau să pierd o variantă, să zicem incompletă,​ dar corectă, de temă. ​
Line 172: Line 173:
 <​note>​ <​note>​
 Pentru acest tutorial, vom lua exemplu o temă de la Structuri de date la care trebuie să se implementeze o listă înlănțuită în C cu toate operațiile necesare (inițializare listă, adăugare element, ștergere element, sortare listă). Pentru acest tutorial, vom lua exemplu o temă de la Structuri de date la care trebuie să se implementeze o listă înlănțuită în C cu toate operațiile necesare (inițializare listă, adăugare element, ștergere element, sortare listă).
 +</​note>​
 +
 +<note tip>
 +Dacă vreți să faceți și ceva practic și să învățați //"git by doing"//​ cea mai bună resursă este http://​gitimmersion.com/​
 +
 +Pentru ce vă trebuie la SO primele 26 de laboratoare sunt cele mai bune.
 </​note>​ </​note>​
  
Line 181: Line 188:
 Este important să setăm numele și email-ul nostru în git deoarece fiecare commit va conține aceste informații. Pentru a face acest lucru urmărim următorii pași: Este important să setăm numele și email-ul nostru în git deoarece fiecare commit va conține aceste informații. Pentru a face acest lucru urmărim următorii pași:
  
-<​code>​ +<​code ​bash
-$ git config --global user.name "Mr. Perfect"​ +student@vagrant:​~$ git config --global user.name "Mr. Perfect"​ 
-$ git config --global user.email mr@perfect.com+student@vagrant:​~$ git config --global user.email mr@perfect.com
 </​code>​ </​code>​
  
Line 190: Line 197:
 === Simple tutorial === === Simple tutorial ===
  
-Acum că avem numele și email-ul setate, putem trece mai departe. Primul pas în lucrul ​cum git este să inițializăm un repository local în directorul în care vom păstra toate fișierele din temă.+Acum că avem numele și email-ul setate, putem trece mai departe. Primul pas în lucrul ​cu git este să inițializăm un repository local în directorul în care vom păstra toate fișierele din temă.
  
-<​code>​ +<​code ​bash
-$ git init+student@vagrant:​~$ git init
 </​code>​ </​code>​
  
 Vrem să asociem repository-ul nostru local cu unul pe server. Fie că folosim Gitlab, Github, Bitbucket sau orice altă variantă, pașii de urmat sunt neschimbați. Repository-ul precizat trebuie să existe de dinainte. Vrem să asociem repository-ul nostru local cu unul pe server. Fie că folosim Gitlab, Github, Bitbucket sau orice altă variantă, pașii de urmat sunt neschimbați. Repository-ul precizat trebuie să existe de dinainte.
  
-<​code>​ +<​code ​bash
-$ git remote add origin link_to_online_repo+student@vagrant:​~$ git remote add origin link_to_online_repo
 </​code>​ </​code>​
  
Line 208: Line 215:
 După ce am terminat de editat fișierul, îl adăugăm în repository folosind comanda ''​add''​. E util ca fiecare schimbare pe care o comitem să fie asociată cu un mesaj **scurt și la obiect** pentru a ști ulterior **exact** ce schimbare a fost produsă cu acel commit. După ce am terminat de editat fișierul, îl adăugăm în repository folosind comanda ''​add''​. E util ca fiecare schimbare pe care o comitem să fie asociată cu un mesaj **scurt și la obiect** pentru a ști ulterior **exact** ce schimbare a fost produsă cu acel commit.
  
-<​code>​ +<​code ​bash
-$ touch .gitignore +student@vagrant:​~$ touch .gitignore 
- +# evităm adăugarea fișierelor obiect 
-$ echo "​*.o"​ >> .gitignore ​# evităm adăugarea fișierelor obiect +student@vagrant:​~$ echo "​*.o"​ >> .gitignore 
- +student@vagrant:​~$ git add .gitignore 
-$ git add .gitignore +student@vagrant:​~$ git commit -m "added .gitignore file to repo"
- +
-$ git commit -m "added .gitignore file to repo"+
 </​code>​ </​code>​
  
 Pentru a publica schimbările locale și pe server, folosim comanda ''​push''​. Pentru a publica schimbările locale și pe server, folosim comanda ''​push''​.
  
-<​code>​ +<​code ​bash
-$ git push origin master+student@vagrant:​~$ git push origin master
 </​code>​ </​code>​
  
Line 230: Line 235:
 În momentul în care ne apucăm de temă, ne vom gândi întotdeauna care sunt milestone-urile pe care le atingem pe parcursul ei. Spre exemplu, putem împărți o tema noastră în următoarele etape: În momentul în care ne apucăm de temă, ne vom gândi întotdeauna care sunt milestone-urile pe care le atingem pe parcursul ei. Spre exemplu, putem împărți o tema noastră în următoarele etape:
  
-* definirea structurilor necesare rezolvării temei (cel puțin în faza preliminară,​ putem face modificări asupra lor ulterior) + * definirea structurilor necesare rezolvării temei (cel puțin în faza preliminară,​ putem face modificări asupra lor ulterior) 
- + * citirea și parsarea datelor de intrare (citirea operațiilor care trebuie efectuate asupra listei, pe rând) 
-* citirea și parsarea datelor de intrare (citirea operațiilor care trebuie efectuate asupra listei, pe rând) + * rezolvarea primelor 5 teste (toate acoperă diverse cazuri legate de adăugarea unui element în listă: la început, la mijloc, la final) 
- + * rezolvarea următoarelor 5 teste (toate acoperă diverse cazuri în care se șterg elemente din listă: primul element, ultimul element, element după valoare) 
-* rezolvarea primelor 5 teste (toate acoperă diverse cazuri legate de adăugarea unui element în listă: la început, la mijloc, la final) + * rezolvarea următoarelor 5 teste (referitoare la sortarea unei liste simplu înlănțuite) 
-* rezolvarea următoarelor 5 teste (toate acoperă diverse cazuri în care se șterg elemente din listă: primul element, ultimul element, element după valoare) + * rezolvarea următoarelor 3 teste (mixte, adăugări, ștergeri, sortări, iar adăugări etc) 
-* rezolvarea următoarelor 5 teste (referitoare la sortarea unei liste simplu înlănțuite) + * rezolvarea următoarelor 2 teste (referitoare la eliberarea corectă a memoriei în momentul ștergerii unuia sau mai multor elemente din listă) 
-* rezolvarea următoarelor 3 teste (mixte, adăugări, ștergeri, sortări, iar adăugări etc) + * eventuale modificări de coding-style (după nevoie) 
-* rezolvarea următoarelor 2 teste (referitoare la eliberarea corectă a memoriei în momentul ștergerii unuia sau mai multor elemente din listă) +
-* eventuale modificări de coding-style (după nevoie)+
  
 Este bine ca după fiecare pas enumerat să salvăm versiunea de cod din mai multe motive: Este bine ca după fiecare pas enumerat să salvăm versiunea de cod din mai multe motive:
-1. putem, din neatenție, oboseală sau grabă, să stricăm ce avem până în momentul de față și să ne vină prea greu să revenim la varianta bună de cod +  - Putem, din neatenție, oboseală sau grabă, să stricăm ce avem până în momentul de față și să ne vină prea greu să revenim la varianta bună de cod 
-2. organizare ​mai bună +  - Organizare ​mai bună 
-3. [În cazul lucrului în echipăse poate vedea cine a făcut o anumită ​schimbare ​a codului+  - **În cazul lucrului în echipă**: se poate vedea cine a făcut o anumită ​modificare ​a codului
  
 Așadar, după fiecare pas trebuie să publicăm schimbările. Vom folosi următoarele comenzi: Așadar, după fiecare pas trebuie să publicăm schimbările. Vom folosi următoarele comenzi:
  
-<​code>​ +<​code ​bash
-$ git add changed_file1 changed_file2 ​# toate fișierele modificate +# toate fișierele modificate 
-$ git commit -m "first 5 tests working" ​# să zicem că am trecut de primele 5 teste  +student@vagrant:​~$ git add changed_file1 changed_file2 
-$ git push origin master+# să zicem că am trecut de primele 5 teste  
 +student@vagrant:​~$ git commit -m "first 5 tests working"​ 
 +student@vagrant:​~$ git push origin master
 </​code>​ </​code>​
  
Line 258: Line 264:
 Am continuat cu rezolvarea temei și mi-am dat seama că ceva nu e în regulă și aș vrea să revin la o versiunea în care mergeau doar primele 5 teste. Vom folosim mai întâi comanda git log Am continuat cu rezolvarea temei și mi-am dat seama că ceva nu e în regulă și aș vrea să revin la o versiunea în care mergeau doar primele 5 teste. Vom folosim mai întâi comanda git log
  
-<​code>​ +<​code ​bash
-$ git log+student@vagrant:​~$ git log
 commit ca82a6dff817ec66f44342007202690a93763949 commit ca82a6dff817ec66f44342007202690a93763949
 Author: Mr. Perfect <​mr@perfect.com>​ Author: Mr. Perfect <​mr@perfect.com>​
Line 292: Line 298:
 Pentru a ne întoarce la această variantă folosim comanda: Pentru a ne întoarce la această variantă folosim comanda:
  
-<​code>​ +<​code ​bash
-$ git revert ca82a6dff817ec66f44342007202690a93763969+student@vagrant:​~$ git revert ca82a6dff817ec66f44342007202690a93763969
 </​code>​ </​code>​
  
Line 302: Line 308:
 Până acum am vorbit de ''​commit''​ ca fiind modul prin care diferențiem o versiune de cod de alta. Acest lucru este de regulă folosit în contextul unui branch. Pentru un întreg repository folosim ''​tags''​ pentru a versiona codul. Pentru mai multe detalii în ceea ce privește tag-urile folosite în lumea git, tipuri de tag-uri și modul în care pot fi create și gestionate, consultați pagina de aici [[https://​git-scm.com/​book/​en/​v2/​Git-Basics-Tagging|aici]]. Până acum am vorbit de ''​commit''​ ca fiind modul prin care diferențiem o versiune de cod de alta. Acest lucru este de regulă folosit în contextul unui branch. Pentru un întreg repository folosim ''​tags''​ pentru a versiona codul. Pentru mai multe detalii în ceea ce privește tag-urile folosite în lumea git, tipuri de tag-uri și modul în care pot fi create și gestionate, consultați pagina de aici [[https://​git-scm.com/​book/​en/​v2/​Git-Basics-Tagging|aici]].
  
-</​hidden>​ 
 ===== Resurse ===== ===== Resurse =====
   * [[https://​docs.joyent.com/​jpc/​getting-started-with-your-joyent-cloud-account/​generating-an-ssh-key/​generating-an-ssh-key-manually/​manually-generating-your-ssh-key-in-windows|Generare cheie SSH Windows Putty]]   * [[https://​docs.joyent.com/​jpc/​getting-started-with-your-joyent-cloud-account/​generating-an-ssh-key/​generating-an-ssh-key-manually/​manually-generating-your-ssh-key-in-windows|Generare cheie SSH Windows Putty]]
so/teme/folosire-gitlab.1551030239.txt.gz · Last modified: 2019/02/24 19:43 by liza_elena.babu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0