* Indicate how we're sorting new contributors
* Don't fork for `date` checks
* Include reference in the manpage
Signed-off-by: Ben Cotton <bcotton@funnelfiasco.com>
This reports generates a list of all contributors whose first commit was
after a specified date.
Fixes#169
Signed-off-by: Ben Cotton <bcotton@funnelfiasco.com>
* Added additional information to better explain how to use this
on macOS.
* Updated some of the deps used
* Minor adjustments in the README.md
Addresses Issue #166
* Users on macOS and other older distributions of Linux and Unix
cannot fully utilize this application as a handful of date/time
strings in here are specific to the GNU utility found on most
modern version of Linux.
Until every date/time case is handled between the BSD version of
date and the GNU version of date, let's error out akin to how we
do it if the user doesn't have every utility installed to run
this script.
Users can get around this by using package managers on macOS such
as homebrew, macports, etc and making sure that 'date' points to
the GNU version of date instead of the BSD version. Linux and
Unix users can get around this by installing the GNU version of
date, as well.
* Removed checking OSTYPE in the format_date() function as checking
if someone is on a machine that identifies as Darwin is not enough
to handle other edge cases where an older version of BSD date
might be present on the system.
* Added the ability to see git stats both per weekday, as well as
by author per weekday. It should respect all global options.
* Updated tests, README.md, and man page to reflect the new changes
- Added commits-by-year graph/statistics.
- Made 'since' use first reachable commit, instead of GIT epoch (May
2005). To avoid empty bars in the new 'Commits by years' graph.
- Removed start-/end-year filter: on -by-weekday, -hour and -month. Instead
made each `grep` look for its date tag fixed in a more specific sequence
so as to not match commit message.
Was giving problems if a since/until date-span larger than one year was given
(ie. #135, #130, #123).
Maybe should look at removing commit message from log listing entirely.
Not sure why `grep -E "($startYear|$endYear)"` was ever introduced yet.
- Made tests run properly, updated test with usage output.
Added a test-case with LC_TIME=POSIX.
* Added the ability to see git stats both per timezone, as well as
by author per timezone. It should respect all global options.
* Adjusted the non-interactive menu as it was missed during the
reorganization effort
* Updated tests, README.md, man page, and screenshots to reflect the
new changes
* Resolves#128
* Before, we had various functions in a different order from the
interactive menu in the code base. This changes our ordering of
the functions and aligns the interactive menu, man pages, README.md,
and code base so that they are all following the same paradigm.
Also fixes some minor missing keywords
* Did some minor clean up of white space to try to adhere to the
classic 80 characters per line standard that is typically found
in shell code. It isn't perfect, but it's getting us closer.
* Added some extra notes and todos for adjustments that can be made
and potential future work for others to jump in on.
myDailyStats() used grep commit to detect count of commits. This
also increases the count by mentioning commit in the commit
message.
Therefore a grep with regex is used that expects a 40 digit/char
SHA1 hash after the word commit.
* When performing actions such as redirecting the stats to a file,
the terminal escape sequences for handling colors gets added
to the top message in the text file. While running commands such
as sed can fix this, it is inconvenient for users wishing to redirect
or pipe the stats in a clean way.
Attempting to use test -t yielded some unexpected results, as well
as extra logic for handling a non-tty case, so for now, we are
simply removing the colors from the message so it defaults to
standard terminal colors and formatting
Fixes#122
* The current default date is set to UNIX Epoch time. However, it seems
some people are possibly having issues with date/time formats within
their OSes. This commit attempts to fix issue #115 when the default
date may be too old and cause no output to show
* There was an issue with quoting in the pathspec variable where
the variable would get mangled when being passed to different
parameters during git operations. This change fixes that.
Fixes#102
* A new feature was implemented to show percentages when displaying
detailed stats (menu options 1 and 2, or options -T and -R).
However, the calculation during "lines changed" may cause an error
within awk stating it cannot divide by zero as there is no check
to see if the divisor is larger than zero.
This commit attempts to fix that issue, albeit admittedly not in
the most elegant way...
Fixes#100
* The JSON output feature was not originally explained well and needed
some additional information on how it worked. Extra info on how to use
this feature, as well as reminding people that this is a beta feature,
was added to help the users when trying out this option
Fixes#96
* If a space existed within _GIT_SINCE, _GIT_UNTIL, or _GIT_PATHSPEC,
the shell would split the variable at the first space it saw because
the variables were not quoted.
If you were to simply quote the variables, then a null variable would
get inserted into git's log, and it would cause an error.
This change adds default values to these variables at all times so
the variables are always assigned to something that git understands.
Fixes#95
* OS X utilizes an older version of GNU Bash. As such, certain features
such as lowercase expansion can fail. This commit removes the Bash 4.0
syntax in favor of a POSIX syntax with awk.
* Users can now switch between allowing merge commits in their stats,
showing only merges in the stats, or ignoring merge commits in
the stats all together.
Showing merges might be good for people who wish to see the entire
history as git shows it by default. For this, setting the new variable
_GIT_MERGE_VIEW to enable will show merge commits in the stats together
with normal commits.
Showing only merges might be useful for people who wish to see how
much of their git history is taken up by merges alone. It can be useful
for re-evaluating a particular workflow. For this, setting the new var
_GIT_MERGE_VIEW to exclusive will show only merge commits in the stats.
The default action is to not display merge commits.
Resolves#88
* 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
* 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.
* 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