Skip to main content

Automatically discover and update all git repositories in a directory tree

Project description

๐Ÿด Gitty Up!

Never forget to pull again

Automatically discover and update all your Git repositories with one command

Python Version PyPI Version PyPI Downloads Test Coverage Tests Code Style License

Features โ€ข Installation โ€ข Quick Start โ€ข Documentation โ€ข FAQ


๐ŸŽฏ The Problem

You're about to start coding. You open your project, dive into the code, make changes... then realize you forgot to git pull. Now you're dealing with merge conflicts, rebasing headaches, and lost time. Sound familiar?

When you're juggling multiple projects, working across different machines, or collaborating with a team, keeping every repository up-to-date becomes a mental burden. One forgotten git pull can derail your entire workflow.

โœจ The Solution

Gitty Up is your automated Git guardian. Point it at your projects directory, and it intelligently scans every repository, pulling the latest changes while keeping your work safe. It documents everything it does, so you always know exactly what changed. No more forgotten pulls. No more merge conflict surprises. No more wondering what happened. Just smooth, up-to-date repositories ready for actionโ€”with complete accountability.

Think of it as your morning coffee routine for your codebaseโ€”one command, and everything's fresh, safe, and fully documented.


๐Ÿš€ Features

๐Ÿ›ก๏ธ Safety First

Smart checks prevent data loss. Skips repos with uncommitted changes, detached HEADs, or missing upstreams. Your local work is always protected.

๐Ÿ” Complete Transparency

Your Git guardian keeps detailed records. Every operation is automatically logged with commit details, file changes, and timing data. Use --explain to review exactly what happenedโ€”perfect for debugging, auditing, or understanding what changed.

๐ŸŽจ Visual Clarity

Beautiful, color-coded output with intuitive symbols. Green for success, red for errorsโ€”know exactly what's happening at a glance.

๐Ÿ”Ž Intelligent Discovery

Recursively finds every Git repository in your directory tree, no matter how deeply nested.

โšก Lightning Fast

Concurrent batch processing updates multiple repositories simultaneously. Configurable batch sizes optimize performance for your workflow. Auto-excludes common junk directories.

๐ŸŽฏ Flexible Control

Dry-run mode, depth limits, custom exclusions, verbosity levelsโ€”you're in complete control of every operation.

โœ… Battle-Tested

91.93% test coverage with 216 comprehensive tests. Production-ready and reliable with every release.


๐Ÿ“ฆ Installation

Prerequisites

  • Python 3.13+ installed on your system
  • Git available in your PATH
  • uv package manager (recommended) or pip

Method 1: Install from PyPI (Recommended) โญ

Install directly from PyPI as a global CLI toolโ€”no virtual environment needed!

# Install as a global tool with uv
uv tool install gittyup

# That's it! Use from anywhere without activating venv
gittyup --version

Benefits: โœ… No venv activation โ€ข โœ… Available system-wide โ€ข โœ… Isolated environment โ€ข โœ… Easy updates

Method 2: Install from Source

For development or contributing to the project:

# Clone and navigate to the project
git clone https://github.com/mikeckennedy/gittyup
cd gittyup

# Install in editable mode with uv
uv tool install --editable .

โšก Quick Start

Basic Commands

# Update all repos in current directory
gittyup

# Update repos in a specific location
gittyup ~/dev/projects

# Preview what would happen (dry run)
gittyup --dry-run

# Get detailed output
gittyup --verbose

Common Workflows

The Monday Morning Refresh ๐ŸŒ…

gittyup ~/projects

Start your week with every project up-to-date.

The Quick Check ๐Ÿ‘€

gittyup --dry-run --verbose

See what's outdated without touching anything.

The Deep Dive ๐Ÿ”Ž

gittyup ~/dev --max-depth 3 --exclude archive --verbose

Scan thoroughly but skip archived projects.

The Accountability Check ๐Ÿ”

gittyup --explain

Review your guardian's detailed report: see exactly what commits were pulled, which files changed, and why any repos were skipped. Perfect for Monday morning catch-up or debugging unexpected changes.

The Performance Mode โšก

gittyup ~/projects --batch-size 5

Update multiple repositories concurrently for maximum speed. Adjust batch size based on your system resources and network connection. Careful you don't over do it and get rate limited at GitHub.

The Safe and Sequential ๐ŸŽฏ

gittyup --sync --verbose

Process repositories one at a time for careful monitoring or when debugging issues. Perfect for troubleshooting or conservative workflows.


๐Ÿ“– Documentation

Command Reference

gittyup [DIRECTORY] [OPTIONS]
Argument/Option Description Default
DIRECTORY Path to scan for repositories Current directory
-n, --dry-run Preview changes without updating Disabled
-b, --batch-size N Number of repos to update concurrently 3
-s, --sync Force sequential updates (batch size = 1) Concurrent
-d, --max-depth N Maximum directory depth to scan Unlimited
-e, --exclude PATTERN Skip directories matching pattern None
-v, --verbose Show all repos, including up-to-date Normal
-q, --quiet Only show errors Normal
--explain Show detailed history of last run Disabled
--version Display version information -
--help Show help message -

Output Guide

Gitty Up uses clear visual indicators to communicate status:

โœ“ Green Repository is up-to-date or successfully updated
โ†“ Cyan Repository pulled new commits
โŠ™ Yellow Repository skipped (safety check failed)
โœ— Red Error occurred during update
โ†’ White Processing repository

Example Output

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                              Gitty Up                                       โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

โœ“ Scanning directory: /Users/dev/projects
โœ“ Found 9 git repositories

Updating: project-alpha, project-beta, project-gamma
โœ“ project-alpha - Already up-to-date
โ†“ project-beta - Pulled 3 commits
โŠ™ project-gamma - Uncommitted changes

Updating: project-delta, project-epsilon, project-zeta
โœ“ project-delta - Already up-to-date
โœ— project-epsilon - Network timeout
โ†“ project-zeta - Pulled 1 commit

Updating: project-omega, project-sigma, project-theta
โœ“ project-omega - Already up-to-date
โœ“ project-sigma - Already up-to-date
โœ“ project-theta - Already up-to-date

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Summary
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Total repositories found: 9
  โœ“ Up to date: 5
  โ†“ Updated: 2
  โŠ™ Skipped: 1
  โœ— Errors: 1

Completed in 4.23 seconds
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Note: The example shows default batch processing (3 repos at a time). Use --sync for sequential updates with individual progress indicators.

Using --explain to Review History

Your Git guardian keeps detailed records of every operation. Need to know what changed? Just ask:

$ cd ~/projects
$ gittyup --explain
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
                    Gitty Up - Operation History
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Operation Details
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
  ๐Ÿ“… Run Date: 2025-10-15 14:23:45
  ๐Ÿ“‚ Directory: /Users/dev/projects
  โฑ๏ธ  Duration: 2.34 seconds
  ๐Ÿ”ง Gittyup Version: 1.0.0
  ๐Ÿ™ Git Version: 2.39.0

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Summary
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
  Total repositories: 5
  โœ… Updated: 1
  ๐Ÿ’ค Already up-to-date: 3
  โญ๏ธ  Skipped: 1
  โŒ Errors: 0

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Repository Details
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

โœ… project-alpha
   Path: /Users/dev/projects/project-alpha
   Duration: 487ms
   Branch: main
   Changes pulled successfully
   Commits: 3
   Files changed: 5
   Insertions: +127
   Deletions: -43

   ๐Ÿ“ Commits:
      a7f2c3d - Add new feature for user authentication
         John Doe โ€ข 2025-10-15T10:23:00
      b8e1d4f - Fix bug in login validation
         Jane Smith โ€ข 2025-10-15T09:15:00
      c9f2e5g - Update dependencies to latest versions
         John Doe โ€ข 2025-10-14T16:45:00

   ๐Ÿ“ Files:
      ~ src/auth.py
         (+45/-12)
      + src/validators.py
         (+32/-0)
      ~ tests/test_auth.py
         (+28/-8)

๐Ÿ’ค project-beta
   Path: /Users/dev/projects/project-beta
   Duration: 123ms
   Branch: develop
   Already up-to-date

โญ๏ธ  project-gamma
   Path: /Users/dev/projects/project-gamma
   Duration: 89ms
   Branch: main
   Skipped
   Reason: Repository has uncommitted changes
   Details: Pull would conflict with local modifications

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

What --explain shows:

  • Complete operation metadata: When it ran, how long it took, tool versions
  • Summary statistics: Overall results across all repositories
  • Detailed repository information:
    • Every commit that was pulled (who wrote it, when, what changed)
    • Exactly which files changed with insertion/deletion counts
    • Why any repos were skipped with specific reasons
    • Full error details for debugging failed operations
    • Branch information and precise timing data

Perfect for:

  • Debugging issues or understanding unexpected changes
  • Auditing what happened during automated runs
  • Reviewing what you missed while away from your desk
  • Team accountability and change tracking

Where logs are stored: Your guardian keeps records in OS-specific cache directories:

  • macOS: ~/Library/Caches/gittyup/logs
  • Linux: ~/.cache/gittyup/logs
  • Windows: C:\Users\<user>\AppData\Local\gittyup\logs

Each directory you scan gets its own log, automatically updated with each run. Storage is minimal (10-50 KB per log).


๐Ÿ›ก๏ธ Safety Features

Gitty Up protects your work with intelligent safety checks. It will skip updating a repository if it detects:

Condition Why it's Skipped What to Do
๐Ÿ”’ Uncommitted changes Prevents losing your work Commit, stash, or discard changes first
๐Ÿ”— No remote configured Nothing to pull from Add a remote: git remote add origin <url>
๐Ÿ“ Detached HEAD state Not on a branch Checkout a branch: git checkout main
๐ŸŽฏ No upstream branch Branch not tracking remote Set upstream: git push -u origin <branch>
๐ŸŒ Network errors Can't reach remote Check connection and remote URL
๐Ÿ” Authentication failed Credentials missing Configure Git credentials

Your local work is always safe. Gitty Up never forces changes or overwrites uncommitted work.


๐Ÿง  Smart Filtering

Gitty Up automatically skips common directories that aren't your code:

Development Environments:
node_modules, venv, .venv, env, .env, vendor

Build Artifacts:
dist, build, target, .eggs, eggs

Caches:
__pycache__, .pytest_cache, .mypy_cache, .ruff_cache, htmlcov

Tools:
.tox, .nox, .idea, .vscode

Version Control:
.git, .svn, .hg

Want to exclude more? Use --exclude:

gittyup --exclude temp --exclude backup --exclude old-stuff

โ“ FAQ

Will Gitty Up overwrite my local changes?

Absolutely not. Gitty Up includes comprehensive safety checks and will skip any repository with uncommitted changes. Your local work is always protected.

What happens if I have a merge conflict?

Gitty Up will detect the conflict, report it as an error, and move on to the next repository. You'll need to resolve conflicts manuallyโ€”Gitty Up never forces merges.

Can I use this with private repositories?

Yes! As long as your Git credentials are properly configured (SSH keys or credential helper), Gitty Up will work seamlessly with private repos.

How do I exclude specific directories?

Use the --exclude option (multiple times if needed):

gittyup --exclude archive --exclude temp --exclude old-projects
Does it work with Git submodules?

Gitty Up treats the parent repository as a single unit and doesn't traverse into submodules. This prevents confusion and duplicate updates.

Can I run this on a schedule?

Absolutely! Set up a cron job (Unix) or Task Scheduler (Windows):

# Example: Daily at 9 AM
0 9 * * * cd ~/projects && ~/.local/bin/gittyup --quiet
What if one repository fails?

Gitty Up continues processing all other repositories. Failures are clearly reported at the end, and you can address them individually.

Does it support SVN or Mercurial?

No, Gitty Up is specifically designed for Git repositories. It's Git all the way down. ๐Ÿด

What information does --explain show?

Think of --explain as your guardian's detailed report card. It shows:

  • Every commit that was pulled: Who wrote it, when they committed it, and the commit message
  • Exactly which files changed: File paths with insertion/deletion counts
  • Why any repos were skipped: Specific reasons like uncommitted changes or detached HEAD
  • Full error details: Complete diagnostics for debugging any issues
  • Operation metadata: When it ran, how long it took, versions used

Perfect when you need to understand what happened, debug an issue, or provide accountability for automated runs. No need to re-run the operationโ€”your guardian remembers everything.

Where are logs stored and how much space do they use?

Your guardian stores logs in OS-specific cache directories using efficient key-value storage:

  • macOS: ~/Library/Caches/gittyup/logs
  • Linux: ~/.cache/gittyup/logs
  • Windows: C:\Users\<user>\AppData\Local\gittyup\logs

Storage impact is minimal: each log is typically 10-50 KB. Even with 100 directories logged, total storage is only 1-5 MB. Each directory gets one log that's updated with each run, so space doesn't grow unbounded.

Do dry runs create logs?

No, dry runs (--dry-run) do not save logs. Your guardian only records actual operations that modify repositories. This keeps your history clean and focused on real changes, not "what if" scenarios.

How does concurrent batch processing work?

By default, Gitty Up updates repositories in batches of 3 simultaneously using async I/O operations. This dramatically improves performance when updating many repositories:

# Default: 3 repos at a time
gittyup ~/projects

# High performance: 5 repos at a time
gittyup ~/projects --batch-size 5

# Sequential (old behavior): 1 repo at a time
gittyup ~/projects --sync

Benefits:

  • Faster updates: Network I/O happens concurrently while waiting for git operations
  • Controlled resources: Batch size prevents overwhelming your system
  • Clear output: Results are displayed in order after each batch completes

When to adjust batch size:

  • Increase (--batch-size 5-10): Fast internet, powerful system, many repos
  • Decrease (--batch-size 1 or --sync): Debugging issues, slow connection, conservative approach

The concurrent processing is safe and respects all the same safety checks as sequential mode.


๐Ÿšจ Troubleshooting

Git Not Found

Error: Git is not installed or not found in PATH

Fix: Install Git and ensure it's in your system PATH:

# macOS
brew install git

# Linux (Debian/Ubuntu)  
sudo apt-get install git

# Verify
git --version

Authentication Issues

Error: Authentication failed

Fix: Configure your Git credentials:

# SSH keys (recommended)
ssh-keygen -t ed25519 -C "your@email.com"
# Then add to GitHub/GitLab/etc.

# Or use credential helper
git config --global credential.helper store

Permission Denied

Error: Permission denied

Fix: Ensure you have read access to the directories being scanned. Check file permissions or run with appropriate privileges.

Network Timeouts

Error: Network error

Fix:

  • Check your internet connection
  • Verify remote URLs: git remote -v
  • Check firewall settings
  • Consider using --max-depth to reduce scope

Log History Not Found

โš ๏ธ  No history found for: /path/to/directory

Fix:

  • Run gittyup in this directory first (your guardian needs something to record!)
  • Remember: logs are only created for actual operations (non-dry-run)
  • Verify you're in the same directory where you previously ran gittyup
  • Check that the cache directory has write permissions

Cache Permission Errors

Error: Failed to save operation log

Fix:

  • Ensure write access to cache directory:
    • macOS: ~/Library/Caches/gittyup/logs
    • Linux: ~/.cache/gittyup/logs
    • Windows: C:\Users\<user>\AppData\Local\gittyup\logs
  • Check directory permissions: ls -la ~/.cache/gittyup (Unix/macOS)
  • Create directory manually if needed: mkdir -p ~/.cache/gittyup/logs

๐Ÿ”ง Development & Contributing

Interested in contributing to Gitty Up or running it locally for development?

๐Ÿ“š See the Development Guide for:

  • Development setup instructions
  • Testing and code quality guidelines
  • Contributing guidelines and PR process
  • Project architecture and design decisions
  • Release process and versioning

We welcome contributions of all kindsโ€”bug reports, feature requests, documentation improvements, and code contributions!


๐Ÿ“Š Project Stats

Metric Value
Test Coverage 91.93%
Total Tests 216 passing
Code Quality Zero linting issues
Python Version 3.13+
Dependencies Minimal (click, colorama, platformdirs, diskcache)
Lines of Code ~2,100

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

Built with โค๏ธ for developers who juggle too many projects and forget to git pull.

Powered by:

  • Click - Command-line interface magic
  • Colorama - Cross-platform colored output
  • platformdirs - OS-specific directory paths
  • diskcache - Fast persistent caching
  • Ruff - Lightning-fast Python linting

๐Ÿ“Œ Version

Current Release: 1.0.0

See change-log.md for complete version history and release notes.


Made with ๐Ÿด by developers, for developers

โฌ† Back to Top

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gittyup-1.0.1.tar.gz (89.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gittyup-1.0.1-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

Details for the file gittyup-1.0.1.tar.gz.

File metadata

  • Download URL: gittyup-1.0.1.tar.gz
  • Upload date:
  • Size: 89.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.5

File hashes

Hashes for gittyup-1.0.1.tar.gz
Algorithm Hash digest
SHA256 8a6263f6cc7d3ba2e11eef45171da0c865468660bc4cf1f5a7c1eff72dcf8a2f
MD5 a24459834d7029f3419b7d4ca6017a17
BLAKE2b-256 7fb08c58e509609fb24e92e2e689df5accb7c413f7c5628dd88ba8fd6af58aca

See more details on using hashes here.

File details

Details for the file gittyup-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: gittyup-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 29.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.5

File hashes

Hashes for gittyup-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ee457560d0e3b826be051a8df4fa6075ac5cb0cba3d76433dab9516e430c83e4
MD5 dac23bb9b320808254ab454bd591e27d
BLAKE2b-256 3dde73e17c6e15455bc8b9433eba8f7b8aadbe8f76edf090f4191b2242b795a0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page