= Ioan-Mihail Stan = {{ :participants:dscf2978.jpg?350|}} * **Nume complet**: Stan Ioan-Mihail * **Alias-uri**: John * **Data/Locul naşterii**: 7 iunie 1992, Bucureşti * **Înălțime**: 1.71m * **Culoare ochi**: căprui * **Culoare păr**: brunet * **Mărime tricou**: L * **Blugi**: ??? * **Mărime încălțăminte**: 41 * **Semne distinctive**: nu sunt necesare == Educație == * **2011-prezent**: Student la facultatea de Automaticǎ şi Calculatoare * CTI CA 3?1 * **2007-2011**: Absolvent al Colegiului Naţional de Informatică "Tudor Vianu", Bucureşti, bacalaureat * profil Matematicǎ - Informaticǎ == Competențe IT == * sisteme de operare * Linux (am lucrat cu distribuţiile Ubuntu, Mint, Debian, Fedora), Windows (în special XP) * limbaje de programare * bine: C, C/C++, shell scripting * beginner: octave, html, latex, xml, dtd * domenii de interes * rețelistică, sisteme de operare, limbaje de programare etc. == Site-uri preferate == - [[http://www.google.com|Google]] - [[http://www.wikipedia.com|Wikipedia]] - [[http://www.facebook.com|Facebook]] - [[http://cs.curs.pub.ro|CS Curs]] == Preferințe == ^Criteriu ^“Valoare” ^ |Limbaj de programare | C/C++ | |Sistem de operare (distribuție) | Mint /Linux| |Aplicație favorită | MinGW| |Personalitate IT preferată | Dennis Ritchie| |Companie preferată | IBM| * Tema 3 USO: #!/bin/bash #Stan Ioan-Mihail #311 CA cd $1 git checkout master &> /dev/null #task 1 #comenzile imi afiseaza toate linile unde apare cuvantul Author ; separ dupa delimitatorul " " -spatiu in coloane astfel de la 2 pana la final de linie mi se vor afisa practic numele + mailurile autorilor de commituri (apelul functiei cut ), nume pe care le sortez corespunzator si carora le numar aparitiile ( sort | uniq -c | uniq -g -r ) if test $2 = "-n" ; then if test $4 = "top_contributors" ; then git log | grep "Author:" | head -$3 |sed -e 's/^[ \t]*//'| cut -n -d ' ' -f 2- | sort | uniq -c | sort -g -r | head -$5 #in cazul in care nu exista argumentul 5 ($5) head - va afisa toate liniile fisierului astfel punctez doua situatii posibile ( cand sunt trimisi 4 sau 5 parametrii ) #exista posibilitatea ca path-ul unui fisier sa fie deplasat spre dreapta cu delimitatorii tab sau space; pentru a lua in considerare acea situatie am apleat la functia sed fi elif test $2 = "top_contributors" ; then if test $# -eq 3 ; then git log| grep "Author:"|sed -e 's/^[ \t]*//'| cut -n -d ' ' -f 2- | sort | uniq -c | sort -g -r |head -$3 fi fi #task 2 #caut liniile care incep cu caractere numerice din statistica numstat a git log-ului; caut practic fisierele dupa statistica insertions if test $2 = "-n" ; then if test $4 = "added_lines" ; then if test $# -eq 5; then git log -$3 --numstat | grep ^[0-9] | tr "\t" " " | grep " $5" | cut -f 1 | awk '{contor+=$1} END {print contor}' #exista posibilitatea ca un fisier cautat intr-o lista cu grep sa se gaseasca in 2 ierarhi de foldere diferite astfel pentru a gasi exact path-ul cerut schimb tab-urile cu spatii si caut exact folderul cerut punand un spatiu inainte de nume else git log -$3 --numstat | grep ^[0-9] | cut -f 1 | awk '{contor+=$1} END {print contor}' #functia awk imi va aduna tot ce se gaseste pe coloana 1 din "fisierul" creat din succesiunea de pipe-uri fi fi else if test $2 = "added_lines" ; then if test $# -eq 3; then git log --numstat | grep ^[0-9] |tr "\t" " " | grep " $3" | cut -f 1 | awk '{contor+=$1} END {print contor}' else git log --numstat | grep ^[0-9] | cut -f 1 | awk '{contor+=$1} END {print contor}' fi fi fi #task 3 #realizez statistici dupa coloana deletions din statistica numstat if test $2 = "-n" ; then if test $4 = "deleted_lines" ; then if test $# -eq 5; then git log -$3 --numstat | grep ^[0-9] |tr "\t" " " | grep " $5" | awk '{print $2, $1, $3}' | cut -d " " -f 1 | awk '{contor+=$1} END {print contor}' else git log -$3 --numstat | grep ^[0-9] | awk '{print $2, $1, $3}'| cut -d " " -f 1 | awk '{contor+=$1} END {print contor}' #prima functie awk imi interschimba coloane fi fi else if test $2 = "deleted_lines" ; then if test $# -eq 3; then git log --numstat | grep ^[0-9] | tr "\t" " " | grep " $3" | awk '{print $2, $1, $3}' | cut -d " " -f 1 | awk '{contor+=$1} END {print contor}' else git log --numstat | grep ^[0-9]|tr "\t" " " | awk '{print $2, $1, $3}'| cut -d " " -f 1 | awk '{contor+=$1} END {print contor}' fi fi fi #task 4 #statistica numstat a git log imi afiseaza toate fisierele modificate in vreun fel; liniile cu path-ul fisierelor sunt cele care incep cu caractere numerice sau - ; wc -l numara liniile dintr-un fisier if test $2 = "-n" ; then if test $4 = "touched_files" ; then if test $# -eq 5; then git log -$3 --numstat --author="$5" | grep ^[0-9-] | cut -f 3 | sort | uniq | wc -l else git log -$3 --numstat | grep ^[0-9-] | cut -f 3 | sort | uniq | wc -l fi fi else if test $2 = "touched_files" ; then if test $# -eq 3; then git log --numstat --author="$3" | grep ^[0-9-] | cut -f 3 | sort |uniq | wc -l else git log --numstat | grep -E ^[0-9-] | cut -f 3 | sort | uniq | wc -l fi fi fi #task 5 #git log branch1..branch2 afiseaza commiturile din branch-ul 2 care nu se gasesc in primul if test $2 = "diff_branches" ; then echo "Commits only in branch $3:" git log $4..$3 --oneline | cut -d " " -f 2- echo echo "Commits only in branch $4:" git log $3..$4 --oneline | cut -d " " -f 2- fi