github_commits_perversion.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #/bin/bash
  2. #
  3. # Count number of commits per user and per versions (using date for version detection)
  4. #
  5. Releases=("3.9" "4.0" "5.0" "6.0" "7.0" "8.0" "9.0" "10.0" "11.0" "12.0" "13.0" "14.0" "15.0" "16.0" "17.0" "18.0" "develop")
  6. let "counter = 0"
  7. echo "Copy script into /tmp/github_commits_perversion.sh"
  8. cp $0 /tmp/github_commits_perversion.sh
  9. echo "Delete /tmp/git"
  10. rm -fr /tmp/git
  11. echo "Create and go into /tmp/git"
  12. mkdir /tmp/git
  13. cd /tmp/git
  14. git clone https://github.com/Dolibarr/dolibarr.git
  15. cd /tmp/git/dolibarr
  16. firstline=1
  17. for i in "${Releases[@]}"
  18. do
  19. if [ $firstline -eq 1 ]; then
  20. firstline=0
  21. continue
  22. fi
  23. #echo "=== Version $i (counter $counter):"
  24. echo "=== Version $i (counter $counter):"
  25. echo "Get common commit ID between origin/${Releases[counter]} and origin/${Releases[counter+1]}"
  26. echo "git merge-base origin/${Releases[counter]} origin/${Releases[counter+1]}"
  27. commitidcommon=`git merge-base origin/${Releases[counter]} origin/${Releases[counter+1]}`
  28. echo "Found commitid=$commitidcommon"
  29. echo "Checkout into version $i"
  30. git checkout $i
  31. #git shortlog -s -n --after=YYYY-MM-DD --before=YYYY-MM-DD | tr '[:lower:]' '[:upper:]' > /tmp/github_commits_perversion.txt
  32. git shortlog -s -n $commitidcommon.. | tr '[:lower:]' '[:upper:]' > /tmp/github_commits_perversion.txt
  33. #cat /tmp/github_commits_perversion.txt
  34. echo "Total for version $i:"
  35. echo -n "- Nb of commits: "
  36. git log $commitidcommon.. --pretty=oneline | tr '[:lower:]' '[:upper:]' > /tmp/github_commits_perversion2.txt
  37. cat /tmp/github_commits_perversion2.txt | wc -l
  38. echo -n "- Nb of different authors: "
  39. awk ' { print $2 } ' < /tmp/github_commits_perversion.txt | sort -u | wc -l
  40. echo "======================="
  41. echo
  42. let "counter +=1"
  43. done