mirror of
https://github.com/git-quick-stats/git-quick-stats.git
synced 2025-12-21 12:13:52 +01:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
206ebd8a76 | ||
|
|
2274ca1284 | ||
|
|
37f15f6381 | ||
|
|
337ead38e3 | ||
|
|
c38e4eb7b6 | ||
|
|
b767822eb3 | ||
|
|
08520bf068 | ||
|
|
374527dbe1 | ||
|
|
dba2d87206 | ||
|
|
8bfc58710a | ||
|
|
6f931ac9b5 |
22
README.md
22
README.md
@@ -1,13 +1,13 @@
|
||||
|
||||
## GIT quick statistics [](https://twitter.com/intent/tweet?text=Simple%20and%20efficient%20way%20to%20access%20various%20statistics%20in%20git%20repository&url=https://github.com/arzzen/git-quick-stat&via=arzzen&hashtags=git,stats,tool,statistics,developers)
|
||||
|
||||
[](https://travis-ci.org/arzzen/git-quick-stats)
|
||||
[](https://travis-ci.org/arzzen/git-quick-stats)
|
||||
[](http://braumeister.org/formula/git-quick-stats)
|
||||
[](https://repology.org/metapackage/git-quick-stats/packages)
|
||||
|
||||
> `git quick-stats` is a simple and efficient way to access various statistics in git repository.
|
||||
|
||||
> Any git repository contains a tonne of information about commits, contributors, and files. Extracting this information is not always trivial, mostly because of a gadzillion options to a gadzillion git commands – I don’t think there is a single person alive who knows them all. Probably not even [Linus Torvalds](https://github.com/torvalds) himself :).
|
||||
> Any git repository contains tons of information about commits, contributors, and files. Extracting this information is not always trivial, mostly because of a gadzillion options to a gadzillion git commands – I don’t think there is a single person alive who knows them all. Probably not even [Linus Torvalds](https://github.com/torvalds) himself :).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
* [**Windows**](#windows-cygwin)
|
||||
|
||||
[**Usage**](#usage)
|
||||
* [**Git log since/unitl**](#git-log-since-until)
|
||||
* [**Git log since/until**](#git-log-since-until)
|
||||
* [**Git log limit**](#git-log-limit)
|
||||
* [**Git pathspec**](#git-pathspec)
|
||||
* [**Tests**](#tests)
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
```bash
|
||||
git quick-stats
|
||||
# or
|
||||
# or
|
||||
git-quick-stats
|
||||
```
|
||||
|
||||
@@ -59,7 +59,7 @@ Or you can use (non-interactive) direct execution:
|
||||
|
||||
`git quick-stats <optional-command-to-execute-directly>`
|
||||
|
||||
Possible arguments:
|
||||
Possible arguments:
|
||||
> suggestReviewers, detailedGitStats, commitsByHour, commitsByWeekday, commitsByMonth, commitsPerDay, commitsPerAuthor, myDailyStats, contributors,
|
||||
branchTree, branchesByDate, changelogs, changelogsByAuthor
|
||||
|
||||
@@ -76,7 +76,7 @@ export _GIT_UNTIL="2017-22-01"
|
||||
then run `git quick-stats` (affect all stats, except "My daily status" and "Git changelogs" )
|
||||
|
||||
|
||||
#### Git log limit
|
||||
#### Git log limit
|
||||
|
||||
You can set variable `_GIT_LIMIT` for limited output (it will affect: "Git changelogs" and "Branch tree view" )
|
||||
|
||||
@@ -122,14 +122,14 @@ brew install git-quick-stats
|
||||
|
||||
#### Windows (cygwin)
|
||||
|
||||
* [installer](https://gist.github.com/arzzen/35e09866dfdadf2108b2420045739245)
|
||||
* [installer](https://gist.github.com/arzzen/35e09866dfdadf2108b2420045739245)
|
||||
* [uninstaller](https://gist.github.com/arzzen/21c660014d0663b6c5710014714779d6)
|
||||
|
||||
|
||||
## System requirements
|
||||
|
||||
* Unix like OS with a proper shell
|
||||
* Tools we use: git ; awk ; sed ; tr ; echo ; grep ; cut ; sort ; head ; uniq ; column.
|
||||
* Tools we use: git ; awk ; sed ; tr ; echo ; grep ; cut ; sort ; head ; uniq ; column ; seq ; tput.
|
||||
|
||||
#### Dependences
|
||||
|
||||
@@ -141,16 +141,16 @@ brew install git-quick-stats
|
||||
|
||||
*A:* You can run dos2unix app in cygwin `/bin/dos2unix.exe /usr/local/bin/git-quick-stats`. This will convert it to Unix format and you then should be able to run it.
|
||||
|
||||
## Contribution
|
||||
## Contribution
|
||||
|
||||
Want to contribute? Great! First, read this page.
|
||||
|
||||
#### Code reviews
|
||||
All submissions, including submissions by project members, require review.
|
||||
All submissions, including submissions by project members, require review.</br>
|
||||
We use Github pull requests for this purpose.
|
||||
|
||||
#### Some tips for good pull requests:
|
||||
* Use our code
|
||||
* Use our code </br>
|
||||
When in doubt, try to stay true to the existing code of the project.
|
||||
* Write a descriptive commit message. What problem are you solving and what
|
||||
are the consequences? Where and what did you test? Some good tips:
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<meta http-equiv="refresh" content="0;url=https://lukasmestan.com/git-quick-stats/">
|
||||
</head>
|
||||
<body id="page-top">
|
||||
<header>
|
||||
|
||||
@@ -26,48 +26,46 @@ else
|
||||
fi
|
||||
|
||||
function show_menu() {
|
||||
NORMAL=`echo "\033[m"`
|
||||
MENU=`echo "\033[36m"`
|
||||
NUMBER=`echo "\033[33m"`
|
||||
FGRED=`echo "\033[41m"`
|
||||
RED_TEXT=`echo "\033[31m"`
|
||||
ENTER_LINE=`echo "\033[33m"`
|
||||
|
||||
echo -e ""
|
||||
echo -e "${RED_TEXT} Generate: ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 1)${MENU} Contribution stats (by author) ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 2)${MENU} Git changelogs (last $_limit)${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 3)${MENU} Git changelogs by author ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 4)${MENU} My daily status ${NORMAL}"
|
||||
local NORMAL=$(tput sgr0)
|
||||
local CYAN_TEXT=$(tput setaf 6)
|
||||
local RED_TEXT=$(tput setaf 1)
|
||||
local YELLOW_TEXT=$(tput setaf 3)
|
||||
|
||||
echo -e "\n${RED_TEXT} Generate: ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 1)${CYAN_TEXT} Contribution stats (by author) ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 2)${CYAN_TEXT} Git changelogs (last $_limit days)${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 3)${CYAN_TEXT} Git changelogs by author ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 4)${CYAN_TEXT} My daily status ${NORMAL}"
|
||||
echo -e "${RED_TEXT} List: ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 5)${MENU} Branch tree view (last $_limit)${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 6)${MENU} All branches (sorted by most recent commit) ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 7)${MENU} All contributors (sorted by name) ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 8)${MENU} Git commits per author ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 9)${MENU} Git commits per date ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 10)${MENU} Git commits per month ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 11)${MENU} Git commits per weekday ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 12)${MENU} Git commits per hour ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 13)${MENU} Git commits by author per hour ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 5)${CYAN_TEXT} Branch tree view (last $_limit)${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 6)${CYAN_TEXT} All branches (sorted by most recent commit) ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 7)${CYAN_TEXT} All contributors (sorted by name) ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 8)${CYAN_TEXT} Git commits per author ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 9)${CYAN_TEXT} Git commits per date ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 10)${CYAN_TEXT} Git commits per month ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 11)${CYAN_TEXT} Git commits per weekday ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 12)${CYAN_TEXT} Git commits per hour ${NORMAL}"
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 13)${CYAN_TEXT} Git commits by author per hour ${NORMAL}"
|
||||
echo -e "${RED_TEXT} Suggest: ${NORMAL}"
|
||||
echo -e "${MENU} ${NUMBER} 14)${MENU} Code reviewers (based on git history) ${NORMAL}"
|
||||
echo -e ""
|
||||
echo -e "${ENTER_LINE}Please enter a menu option or ${RED_TEXT}press enter to exit. ${NORMAL}"
|
||||
read opt
|
||||
echo -e "${CYAN_TEXT} ${YELLOW_TEXT} 14)${CYAN_TEXT} Code reviewers (based on git history) ${NORMAL}"
|
||||
echo -e "\n${YELLOW_TEXT}Please enter a menu option or ${RED_TEXT}press enter to exit. ${NORMAL}"
|
||||
read -r opt
|
||||
}
|
||||
|
||||
function option_picked() {
|
||||
COLOR='\033[01;31m'
|
||||
RESET='\033[00;00m'
|
||||
MESSAGE=${@:-"${RESET}Error: No message passed"}
|
||||
echo -e "${COLOR}${MESSAGE}${RESET}"
|
||||
echo ""
|
||||
local BOLD=$(tput bold)
|
||||
local RED_TEXT=$(tput setaf 1)
|
||||
local COLOR="${BOLD}${RED_TEXT}"
|
||||
local RESET=$(tput sgr0)
|
||||
local MESSAGE=${*:-"${RESET}Error: No message passed"}
|
||||
|
||||
echo -e "${COLOR}${MESSAGE}${RESET}\n"
|
||||
}
|
||||
|
||||
function detailedGitStats() {
|
||||
option_picked "Contribution stats (by author):"
|
||||
|
||||
git log --use-mailmap --no-merges --numstat --pretty="format:commit %H%nAuthor: %aN <%ae>%nDate: %ad%n%n%w(0,4,4)%B%n" $_since $_until $_pathspec | LC_ALL=C awk '
|
||||
git log --use-mailmap --no-merges --numstat --pretty="format:commit %H%nAuthor: %aN <%aE>%nDate: %ad%n%n%w(0,4,4)%B%n" $_since $_until $_pathspec | LC_ALL=C awk '
|
||||
function printStats(author) {
|
||||
printf "\t%s:\n", author
|
||||
|
||||
@@ -202,7 +200,7 @@ function commitsByHour() {
|
||||
_author="--author=$author"
|
||||
fi
|
||||
echo -e "\thour\tsum"
|
||||
for i in `seq -w 0 23`
|
||||
for i in $(seq -w 0 23)
|
||||
do
|
||||
echo -ne "\t$i\t"
|
||||
echo "$(git shortlog -n --no-merges --format='%ad %s' $_author $_since $_until | grep ' '$i: | wc -l)"
|
||||
@@ -269,9 +267,10 @@ function branchesByDate() {
|
||||
|
||||
function changelogs() {
|
||||
local author="${1:-}"
|
||||
local _author=''
|
||||
local _author
|
||||
if [ -z "$author" ]; then
|
||||
option_picked "Git changelogs:"
|
||||
_author="--author=**"
|
||||
else
|
||||
option_picked "Git changelogs for author '$author':"
|
||||
_author="--author=$author"
|
||||
|
||||
Reference in New Issue
Block a user