Commit Graph

72 Commits

Author SHA1 Message Date
Andrej
c8ad2fba84 array of util names are read only now 2019-10-25 14:23:15 +02:00
Andrej
5cf8feee53 refactor checkUtils: remove repeating commands
putting checked utils into array and running through the array in for loop cleans the code
2019-10-25 10:41:05 +02:00
Lukáš Mešťan
75c8bdc0de Merge pull request #80 from ProcrastinatorCp/gh-70
Support commits by co-authors
2019-10-13 17:41:05 +02:00
Chandra Prakash
4979eaa69f Support commits by co-authors
https://github.com/arzzen/git-quick-stats/issues/70

Commits by multiple authors (co-authored-by) were only counted towards main author.
Modified commitsPerAuthor() to include co-author's commits.
2019-10-13 02:16:54 +08:00
Tom Ice
0fd9171e11 Adding info on how to exclude files in the docs
* Added information in the README.md to show how to exclude files
  from the stats by utilizing git pathspec
* Updated the built-in help, manpage, and tests to reflect how git
  pathspec can be utilized on files and folders
* Removed the \r tokens that were put in README.md from Windows

Fixes #61
2019-10-10 08:15:42 -04:00
Tom Ice
5f0bc1c7cf Removed GPG info from JSON and updated README pics
* The GPG settings don't play well with OS X if you don't have
  certain tools installed, so they were removed from the git log
  format settings for the JSON output.

* Pictures have been updated to reflect the new menu option.
2019-05-24 23:35:11 -04:00
Tom Ice
5f71b785ac Added ability to save log as a JSON formatted file
* The main feature of this commit is addressing the feature request
  of adding the ability to save the output as a file to use in other
  tools. I decided to use the JSON format as it's relatively straight
  forward and easy to create thanks to a few Google searches.

  The original feature request was to add the ability to output any of
  the options as a JSON/XML/YAML format. That said, because this entire project
  is relying only on built-in shell utilities, we kind of have to format stuff
  ourselves in relatively primitive tools such as awk, sed, and bash in order
  to adhere to the "spirit" of this codebase.

  It is possible to use Perl and/or Python, but that would defeat the purpose
  of this, in my opinion. The downside of not using these tools is that it
  might not be as robust and battle hardened as the others.

  AS SUCH, THIS FEATURE IS CURRENTLY EXPERIMENTAL.

  As people provide feedback, we can adjust this and possibly extend it to
  more options. For now, it respects _GIT_SINCE and _GIT_UNTIL. It does not
  respect variable expansion in paths, though, so saving it to a location such
  as "${my_save_location}" will fail.

* Made some of the variables a bit more robust by utilizing the -r flag to
  make the variables readonly. It should be noted that "local readonly" does
  not work, nor does "readonly local". The best way to do this is either via
  "local -r foo=bar" or "local foo=bar && readonly bar".

* Fixed a few comments describing how functions work.

* Added a .gitignore.

* Changed all functions to adhere to camelCase style for no real reason
  other than consistency and a few other minor things.

* Closes #31
2019-05-24 21:15:19 -04:00
Matt Hickman
4aef465e6b Change format of _GIT_SINCE in help
The format _GIT_SINCE is what `git --since` takes in
which is YYYY-MM-DD.

Ref: https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History
2019-05-17 09:54:27 -07:00
Tom Ice
bdfe3beb25 New default theme with toggle-able legacy theme
* This sets the newly proposed theme as the main theme. In order to
  switch back to the legacy theme, set _MENU_THEME to legacy.
  This feature is currently an experimental feature and may change
  in the future.

* Fixes documentation and updates test to reflect newly changed theme.
2019-05-12 19:32:11 -04:00
Tom Ice
90d118f09f Fixing some menu color issues 2019-05-10 22:55:42 -04:00
Tom Ice
d12c1c6c4f Added color scheme toggle-ability and updated docs
* You can now switch between the default theme and an alternative theme
  for those who would like a different look to the interactive menu.
  In order to set this, simply do export _MENU_THEME=alternative. Anything
  that isn't "alternative" will simply fall back to the default menu option.

* Fixed merge conflicts based on the latest master branch which added the
  contribution stats by branch option.

* Fixed tests, updated docs, and all that fun stuff.
2019-05-10 16:17:42 -04:00
jdeguzman
48c062f8fa Prevent logging refs when checking branch existence 2019-05-10 18:57:04 +08:00
jdeguzman
c3194f77e3 Add interactive menu for the detailed stats by branch 2019-05-10 18:08:38 +08:00
jdeguzman
52f4eff27c Add on the current branch 2019-05-10 18:00:25 +08:00
jdeguzman
c7d456465e Optimize branch existence validator 2019-05-10 11:00:38 +08:00
Joshua de Guzman
e9f085f20e Add git stats by branch to the options and update unit test 2019-05-10 01:08:53 +08:00
Joshua de Guzman
625ec404bc Update validation rules 2019-05-10 00:24:16 +08:00
jdeguzman
e6ffee5850 Add branch existence validation 2019-05-09 20:17:57 +08:00
jdeguzman
2422a010c6 Add non interactive request for detailed stats by branch 2019-05-09 19:41:47 +08:00
Hugo Locurcio
749367701d Improve the interactive menu
This adds a `>` at the end of the message to denote the program
is waiting for user input.

This also tweaks colors for better readability.
2019-04-11 14:40:16 +02:00
Laurence
3344a05237 Fix some items are not displayed 2019-02-18 19:58:26 -05:00
Tom Ice
e82339b777 Added internal documentation and minor cleanup
* All internal functions now have documentation describing what they are,
  what arguments they take, and what external variables are set in an effort
  to help others understand the codebase more quickly

* Changed a few lines where grep | wc -l occurred, as grep has a built-in
  option to do this: grep -c

* Removed a $* where the suggestReviewers function expected a string but
  never received one during the life of the program

* Adjusted some lines so they weren't quite as long, adjusted some variable
  names, and other minor cleanup
2019-02-01 13:51:21 -05:00
Tom Ice
187c03ae98 Fixed issue where signatures were parsed in logs
* When someone has the showSignature=true flag set in their .gitconfig
  file, gpg verifying signature related text would be parsed as if it
  was actual log information. This change ignores signature-related text
  by passing the -c log.showSignature=false option to git so it ignores
  a user's custom .gitconfig showSignature flag regardless as to what it
  is set to.

Resolves: Issue #52
2019-01-16 18:10:59 -05:00
Tom Ice
2cc5cae1a8 Changed non-interactive args and fixed main loop
* The previous commands were Lower CamelCase style and had no equivalent
  short options. If you wanted to see the branch tree via non-interactive
  mode, you always needed to supply "branchTree" as the passing argument to
  the git-quick-stats script.

  This commit changes the argument style to be more akin to the POSIX and GNU
  styles of arguments commonly seen in many other applications. As of this
  commit, there is no compatibility with legacy commands, so those who have
  been using the old commands will unfortunately need to get familiar with the
  new ones. All documentation and tests have been updated accordingly to
  reflect the new changes.

* The main interactive loop contained a non-variable constant that was only
  getting parsed correctly due to legacy fallback behavior. This commit fixes
  the main loop and cleans up the formatting a little bit.

* Added -r to more areas where read reads in a variable to help prevent
  it from mangling backslashes.

* Changed everything to use bash's built-in [[ notation and did some minor
  formatting changes to reduce the LOC.

* Removed some unnecessary echo statements and did some other minor cleanup.
2019-01-10 20:47:40 -05:00
Tom Ice
36405591ec Fix bug related to author name in hourly stats
* Fixing a bug where, if you insert an author's name that has a space in the
  "Git commits by author per hour" option, it fails due to improper variable
  expansion. Note that the current implementation is a "greedy" one in that
  it will attempt to look for any instance of the user provided string in the
  author field
2019-01-01 14:37:11 -05:00
Tom Ice
83e96f8b80 Fix divide by zero error and add utility checker
* In some situations, the awk statements in the functions commitsByMonth,
  commitsByDay, and commitsByHour attempt to divide by zero and display
  an error to the user. To invoke this bug, checkout any of the previous
  commits and attempt to see commits by hour from some user who has never
  committed to this repository.

  This commit fixes this bug by making sure the awk statement only ever
  executes when the total commits is greater than zero.

* Added a utility checker to make sure that the user has all of the necessary
  tools in their path in order to run this script. If they do not exist, it
  exits and informs the user that this script cannot locate them in PATH.

* Adjusted shell logic to prevent double negatives from confusing developers
  as ! -z is technically read as something akin to "not has no value"

* Changed some statements to utilize safer and more predictable bash-isms

* Minor white space fixes and adjusted the README.md slightly
2018-12-21 14:50:13 -05:00
Tom Ice
2274ca1284 Improve color compatibility and other minor fixes
* Color was originally done with ANSI escape characters for defining
  different "expected" colors. However, this is not uniform across all
  terminals. To improve what the designers of this program expect
  colors to be, escape codes were replaced with tput equivalents.
  For more information, see the GNU manual here:

  https://www.gnu.org/software/termutils/manual/termutils-2.0/html_chapter/tput_1.html

* Limited scope of variables to their local scope instead of having them
  be global

* Renamed menu variables to aid in readability and adjusted formatting
  slightly to be more uniform

* Fixed a bug where option_picked was assigning an array to a string
  and relying on the default behavior of the shell to interpret it

* Added the -r option to "read" for safety, as read without -r will
  interpret backslashes before spaces/line feeds, which tends to
  be an unintended side effect

* Updated all backtick notation to the newer POSIX $(..) notation for
  aid in readability when paired next to single quotes and improved
  safety

* Updated the README.md to include missing utilities and fixed some
  minor formatting issues
2018-12-21 12:05:53 -05:00
motiprajapati
b767822eb3 Respect mailmap author email
While using this tool feature "Contribution stats (by author)", I observed that script was not respecting author email as option was being used here was "%ae". Corrected it to "%aE", output looks good now.
2018-11-30 13:26:17 +05:30
Daniel
374527dbe1 changelogs printed with days limit 2018-11-05 20:45:01 +02:00
Daniel
dba2d87206 fixed git changelogs without author wont work 2018-11-05 20:40:13 +02:00
Phạm Ngọc Thắng
e5727cf4e9 fix: author not show fullname 2018-09-19 10:17:16 +07:00
Alef Farah
36967bc6f4 Fix ambiguous argument when author is not specified 2018-07-25 18:38:37 -03:00
Robert Beilich
a496390884 Fix error on whitespace in author name
Fixes https://github.com/arzzen/git-quick-stats/issues/37
2018-07-17 09:42:39 +02:00
Lukas Mestan
10353cbeff respecting .mailmap, refs #33 2017-09-04 11:23:16 +02:00
Lukáš Mešťan
0f68ba1588 fix define function 2017-07-28 09:42:33 +02:00
Lukas Mestan
aa6065ed3b changelogsByAuthor 2017-03-28 10:36:56 +02:00
Lukas Mestan
66d7eee893 add author to changelogs 2017-03-28 10:15:19 +02:00
Lukas Mestan
5494388655 fix exit code 2017-03-18 14:04:03 +01:00
Lukas Mestan
d2fe6fe5ce bugfix tree view 2017-03-18 12:09:17 +01:00
Brian Kroth
d4f09f23be adapts commitsByHour to allow reporting by author as well 2017-03-17 10:53:25 -05:00
Lukáš Mešťan
89a62ebe06 remove dot in pathspec 2017-03-17 07:30:29 +01:00
Lukáš Mešťan
481bc47482 rename variable _exclude to _pathspec 2017-03-16 11:43:48 +01:00
Lukas Mestan
29bbc98c87 rename _GIT_EXCLUDE to _GIT_PATHSPEC 2017-03-15 20:11:56 +01:00
Lukas Mestan
f344f0dfb7 quote ${_exclude} 2017-03-15 19:09:07 +01:00
Lukas Mestan
8b24e28c95 add _GIT_EXCLUDE, #25 2017-03-15 18:51:00 +01:00
Lukas Mestan
745b995f30 update inline graph 2017-03-07 19:09:36 +01:00
Lukas Mestan
1a7abe3132 fix #24, sort commits by weekday 2017-02-28 20:15:17 +01:00
Lukas Mestan
11c1a9ff5c add limit option for changelogs & branch tree view 2017-02-22 20:05:05 +01:00
Lukas Mestan
2e9b163766 remove white spaces 2017-02-21 20:36:08 +01:00
Dustin Blomquist
27f0857b77 added november to the list of months 2017-02-18 01:08:10 -06:00