Ioan-Mihail Stan
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
2007-2011: Absolvent al Colegiului Naţional de Informatică “Tudor Vianu”, Bucureşti, bacalaureat
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
Site-uri preferate
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 |
#!/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