PHPackages                             sourcerer-mike/git-time - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. sourcerer-mike/git-time

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

sourcerer-mike/git-time
=======================

v0.3.0(8y ago)16572[1 issues](https://github.com/ScreamingDev/git-time/issues)PHP

Since Jan 17Pushed 8y agoCompare

[ Source](https://github.com/ScreamingDev/git-time)[ Packagist](https://packagist.org/packages/sourcerer-mike/git-time)[ RSS](/packages/sourcerer-mike-git-time/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (3)Versions (3)Used By (0)

git time
========

[](#git-time)

- How much does that **feature cost**? `git time src/feature/path`
- What did I do **today**? `git time --me -v --since=yesterday`
- Did we **invoice** everything? `git time -v --since="end of last month"`

The `-v` gives you a nice table showing the time spend on each commit.

Installation
------------

[](#installation)

Works best as global composer package:

```
composer global require sourcerer-mike/git-time

# Do you have your composer bin accessible? If not ...
echo 'PATH=$PATH:~/.config/composer/vendor/bin' >> ~/.bashrc

```

or local installation per project (`composer require sourcerer-mike/git-time:dev-master`). You might like to add ` ~/.config/composer/vendor/bin/` to your PATH variable in Bash ;)

Estimate the time taken on a project or feature
-----------------------------------------------

[](#estimate-the-time-taken-on-a-project-or-feature)

Check how long you took for that?

```
git-time estimate src/my-feature/foo.php

# or for a specific time range
git-time estimate 13ea7dd..HEAD

# or both
git-time estimate 13ea7dd..HEAD  src/my-feature/foo.php

# for a particular time range (e.g. today) and a single author(maybe for you to clock at work)
git-time estimate -v --since 00:00 --author "Mike Pretzlaw"

```

The result will be shown in a table:

```
+---------+------------------+------------------------------------------+-------------+-------------+
| Hash    | Date             | Message                                  | Duration    | Cumulated   |
+---------+------------------+------------------------------------------+-------------+-------------+
| 18b978f | 2016-05-23 21:51 | initial empty commit                     |          1m |          1m |
| feced85 | 2016-05-24 07:52 | Estimate taken time with max cap         |         30m |         31m |
| d2c50ce | 2016-05-24 08:20 | Fetch parent commits                     |         28m |         59m |
| d21fd09 | 2016-05-24 08:38 | Calculate time related to parent commit. |         19m |      1h 18m |
+---------+------------------+------------------------------------------+-------------+-------------+

```

Might be all. Did I miss something?

How it works
------------

[](#how-it-works)

Imagine you run `git time -v` on these commits:

```
Initial commit              second                 third          fourth
            |                  |                     |               |
            |--- 10 minutes ---|------ ~7 days ------|-- 3 minutes --|
            |                  |                     |               |
last week 12:00              12:10           today 10:20           10:23
            |                  |                     |               |
            |--- 10 minutes ---|---- 30 minutes -----|-- 3 minutes --|
            |                  |  limited to maximum |               |
 Total of 43 minutes

```

The limit can be changed using `git time --max=60` (minutes) and there is even more about this:

- The **initial commit** itself will count as **one minute**. You don't really need long for opening a GIT repo. If so change this time via `--no-parent-time` and set it to hours if you take that long ;)
- From **initial commit** to **second** it took you **10 minutes**. That's okay, we add that and have 11 minutes in total now.
- But from **second** to **third** you fell asleep and continue to work one week (or day) later. This is a gap of days but `git-time` limits this down to **30 minutes**. If you don't like this limit then change it via the `--max` option.
- The last and **fourth** commit is easy. Just **3 minutes** after the previous one which makes it 44 minutes in total for this project. Pretty small one.

Providing the `-v` flag will give you a cleaner nicer look at this:

```
+---------+------------------+----------------------+-------------+-------------+
| Hash    | Date             | Message              | Duration    | Cumulated   |
+---------+------------------+----------------------+-------------+-------------+
| 18b978f | yesterday 12:00  | initial empty commit |          1m |          1m |
| feced85 | yesterday 12:10  | second               |         10m |         11m |
| d2c50ce | today 10:20      | third                |         30m |         41m |
| d21fd09 | today 10:23      | fourth               |          3m |         44m |
+---------+------------------+----------------------+-------------+-------------+

```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

3040d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/43cfe7528adedb7318b4d1e680eb50ad8cd2a17fd7bc4417359cd0d711bad988?d=identicon)[sourcerer-mike](/maintainers/sourcerer-mike)

---

Top Contributors

[![ScreamingDev](https://avatars.githubusercontent.com/u/2559177?v=4)](https://github.com/ScreamingDev "ScreamingDev (30 commits)")

### Embed Badge

![Health badge](/badges/sourcerer-mike-git-time/health.svg)

```
[![Health](https://phpackages.com/badges/sourcerer-mike-git-time/health.svg)](https://phpackages.com/packages/sourcerer-mike-git-time)
```

###  Alternatives

[symfony/maker-bundle

Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.

3.4k111.1M568](/packages/symfony-maker-bundle)[symplify/monorepo-builder

Not only Composer tools to build a Monorepo.

5205.3M82](/packages/symplify-monorepo-builder)[coenjacobs/mozart

Composes all dependencies as a package inside a WordPress plugin

4723.6M20](/packages/coenjacobs-mozart)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

96374.6k23](/packages/friendsoftypo3-content-blocks)[shyim/danger-php

Port of danger to PHP

8544.9k](/packages/shyim-danger-php)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
