
Security News
PolinRider: North Korea-Linked Supply Chain Campaign Expands Across Open Source Ecosystems
PolinRider expands across npm, Packagist, Go modules, and Chrome extensions, using hidden loaders to target developer environments.
git-digger
Advanced tools
 
A program for extracting 'contribution data' from git repositories into JSON files.
You can install the tool using any NPM-like system.
npm i -D git-digger # this will install it into a project as a dev dependency
npx digger current-contribution-data $(pwd) # You can use npx to run a project's programs easily
npm i -g git-digger # this will install it globally into npm
digger current-contribution-data $(pwd) # Now it should be available via NPM's path on your shell.
The current-contribution-data command will collect the most recent contribution to the repository.
The most recent contribution is calculated by looking for the most recent, non-HEAD tag, and then including every commit after that until the current HEAD.
The contribution data JSON is created at ./currentContributionData.json.
It will include all fields listed here.
Any "Instant" in the specification is an ISO 8601 date-time. Any Duration is an ISO 8601 duration.
The all-contribution-data command will collect all the contributions in the git repository.
This is calculated by subdividing the repository by its tags, and each section becomes a contribution.
The contribution data JSON is created at ./allContributionData.json, as a JSON array.
It will include all fields listed here.
Any "Instant" in the specification is an ISO 8601 date-time. Any Duration is an ISO 8601 duration.
Both commands support machine-readable JSON output for CI/CD pipelines and automation scripts via the --format flag.
--format=text (default): Writes JSON to a file and prints a confirmation message--format=json: Outputs structured JSON to stdout wrapped in a status envelopeExample command:
digger current-contribution-data $(pwd)
Output:
Data written to currentContributionData.json
The JSON data is written to currentContributionData.json (or the file specified by --output-file).
Example command:
digger current-contribution-data $(pwd) --format=json
Success response:
{
"status": "success",
"data": {
"storyId": "STORY-123",
"contributors": [
{
"email": "user@example.com",
"name": "John Doe"
}
],
"commits": [
{
"sha": "abc123",
"message": "[STORY-123] [patch] Fix bug",
"dateTime": "2026-05-19T10:30:00Z"
}
],
"semver": "Patch",
"label": "my-project",
"firstCommitDateTime": "2026-05-19T10:30:00Z",
"lastCommitDateTime": "2026-05-19T10:30:00Z",
"ease": 3
}
}
The data field contains the contribution data object.
See ContributionDataJson.kt
for the complete schema, or use current-contribution-data --help for field descriptions.
Example command:
digger all-contribution-data $(pwd) --format=json
Success response:
{
"status": "success",
"data": [
{
"storyId": "STORY-123",
"contributors": [],
"commits": [],
"semver": "Patch",
"label": "my-project",
"firstCommitDateTime": "2026-05-19T10:30:00Z",
"lastCommitDateTime": "2026-05-19T10:30:00Z",
"ease": 3
}
]
}
(Additional contribution objects omitted for brevity)
The data field contains an array of contribution data objects, one for each contribution period. Use
all-contribution-data --help for more details.
Extract story ID in GitHub Actions:
- name: Get current contribution
id: contribution
run: |
STORY_ID=$(digger current-contribution-data $(pwd) --format=json | jq -r '.data.storyId')
echo "story-id=$STORY_ID" >> $GITHUB_OUTPUT
- name: Use story ID
run: |
echo "Current story: ${{ steps.contribution.outputs.story-id }}"
Extract contributor list in bash:
# Get contributors
CONTRIBUTORS=$(digger current-contribution-data $(pwd) --format=json | jq -r '.data.contributors[].name')
echo "Contributors:"
echo "$CONTRIBUTORS"
Check semver type:
OUTPUT=$(digger current-contribution-data $(pwd) --format=json 2>/dev/null)
SEMVER=$(echo "$OUTPUT" | jq -r '.data.semver')
case "$SEMVER" in
"Major")
echo "Breaking change detected"
;;
"Minor")
echo "New feature detected"
;;
"Patch")
echo "Bug fix detected"
;;
"None")
echo "No version bump"
;;
esac
Extract all story IDs:
# Get all contributions and extract story IDs
STORY_IDS=$(digger all-contribution-data $(pwd) --format=json | jq -r '.data[].storyId' | sort -u)
echo "All story IDs:"
echo "$STORY_IDS"
For a full listing of the available options in the program, please use the built-in help command.
digger --help
For fit-assessment guidance and workflow recommendations:
digger guide
Documentation is also available as markdown files in the repository:
FAQs
 
The npm package git-digger receives a total of 32 weekly downloads. As such, git-digger popularity was classified as not popular.
We found that git-digger demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
PolinRider expands across npm, Packagist, Go modules, and Chrome extensions, using hidden loaders to target developer environments.

Security News
Open source attacks are accelerating as AI coding agents pull in dependencies faster, with less human review.

Research
/Security News
Malicious Chrome and Firefox extensions posed as free VPNs while stealing clipboard data through later extension updates.