# ugit ๐
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/psf/black)
A minimal Git implementation in Python that demonstrates the core concepts of version control systems. Perfect for learning how Git works under the hood!
## โจ Features
### Core Git Functionality
- **Repository initialization** - Create new ugit repositories
- **File staging** - Add files to the staging area
- **Committing** - Create commits from staged changes
- **History viewing** - Browse commit history with detailed logs
- **Checkout** - Restore files from specific commits
- **Status checking** - See which files are modified, staged, or untracked
- **Branching** - Create, switch, and manage branches
- **Merging** - Merge branches with conflict resolution
- **Remotes** - Work with remote repositories (clone, fetch, pull, push)
- **Stashing** - Temporarily save changes for later (save, list, pop, apply, drop)
- **Diffing** - Compare changes between commits, files, or working directory
### ๐ Web Interface
- **Beautiful Dark Mode Interface** - Modern, professional repository browser
- **File Explorer** - Navigate repository files and directories with ease
- **Code Viewer** - Syntax-highlighted file viewing with line numbers
- **Commit History** - Visual commit timeline with detailed information
- **Real-time Updates** - Dynamic loading of repository data
- **Responsive Design** - Works perfectly on desktop and mobile devices
## ๏ฟฝ Documentation
- **[Installation Guide](docs/installation.md)** - How to install and set up ugit
- **[User Guide](docs/user-guide.md)** - Complete guide to using ugit commands
- **[Examples](docs/examples.md)** - Practical examples and use cases
- **[API Reference](docs/api-reference.md)** - Technical documentation
- **[Developer Guide](docs/developer-guide.md)** - Guide for contributors
- **[Architecture](docs/architecture.md)** - System design overview
- **[FAQ](docs/faq.md)** - Frequently asked questions
- **[Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions
## ๏ฟฝ๐ Quick Start
### Installation Options
#### Option 1: Basic Installation (CLI Only)
```bash
pip install ugit-cli
```
This installs the core ugit functionality for command-line usage.
#### Option 2: Full Installation (CLI + Web Interface)
```bash
pip install ugit-cli[web]
```
This includes the beautiful web interface for browsing repositories.
#### Option 3: Development Installation
```bash
# Clone the repository
git clone https://github.com/night-slayer18/ugit.git
cd ugit
# Install in development mode (CLI only)
pip install -e .
# Or install with web interface support
pip install -e .[web]
```
pip install -e .[web]
```
### Basic Usage
#### Command Line Interface
```bash
# Initialize a new repository
ugit init
# Add files to staging area
ugit add file.txt
ugit add .
# Create a commit
ugit commit -m "Initial commit"
ugit commit -m "Commit message" --author "Name <email@example.com>"
# Check repository status
ugit status
# View commit history
ugit log # Full history
ugit log --oneline # Compact view
ugit log --graph # ASCII graph
ugit log -n 5 # Limit to 5 commits
ugit log --since "2025-01-01" # Since date
# Checkout commits and branches
ugit checkout <commit-sha> # Checkout specific commit
ugit checkout <branch> # Switch to branch
ugit checkout -b <branch> # Create and switch to branch
# Branch management
ugit branch # List branches
ugit branch <name> # Create branch
ugit branch -d <name> # Delete branch
# Merge branches
ugit merge <branch> # Merge branch
ugit merge <branch> --no-ff # Force merge commit
# Show differences
ugit diff # Working directory changes
ugit diff --staged # Staged changes
ugit diff <commit1> <commit2> # Between commits
# Reset operations
ugit reset # Unstage all files
ugit reset <commit> # Reset to commit (soft)
ugit reset --hard <commit> # Reset to commit (hard)
ugit reset --soft <commit> # Reset to commit (keep staged)
# Stash operations
ugit stash # Stash current changes
ugit stash save "message" # Stash with message
ugit stash list # List all stashes
ugit stash pop # Apply and remove latest stash
ugit stash pop 1 # Apply specific stash by index
ugit stash apply # Apply stash without removing
ugit stash drop # Remove stash without applying
ugit stash -u # Include untracked files
# Remote repository operations
ugit clone <url> [directory] # Clone repository
ugit remote # List remotes
ugit remote -v # List remotes with URLs
ugit remote add origin <url> # Add remote
ugit remote remove <name> # Remove remote
ugit remote show <name> # Show remote details
# Fetch, pull, and push
ugit fetch # Fetch from origin
ugit fetch <remote> # Fetch from specific remote
ugit pull # Pull from origin/current branch
ugit pull <remote> <branch> # Pull specific branch
ugit push # Push to origin/current branch
ugit push <remote> <branch> # Push specific branch
ugit push -f # Force push
# Configuration
ugit config user.name "Your Name"
ugit config user.email "you@example.com"
ugit config --list # List all configuration
```
#### ๐ Web Interface
```bash
# Start the web interface (requires ugit[web] installation)
ugit serve
# Custom host and port
ugit serve --host 0.0.0.0 --port 8080
# Don't open browser automatically
ugit serve --no-browser
```
The web interface provides:
- **Beautiful file browser** with syntax highlighting
- **Interactive commit history** with timeline view
- **Responsive design** that works on all devices
- **Real-time repository exploration** without command line
## ๐ Project Structure
```
ugit/
โโโ ugit/ # Main package
โ โโโ __init__.py # Package initialization
โ โโโ cli.py # Command-line interface
โ โโโ core/ # Core functionality
โ โ โโโ objects.py # Object storage and hashing
โ โ โโโ repository.py # Repository and index management
โ โโโ commands/ # Command implementations
โ โ โโโ init.py # Repository initialization
โ โ โโโ add.py # File staging
โ โ โโโ commit.py # Commit creation
โ โ โโโ log.py # History viewing
โ โ โโโ checkout.py # File restoration
โ โ โโโ status.py # Status checking
โ โ โโโ serve.py # Web interface server
โ โ โโโ branch.py # Branch management
โ โ โโโ merge.py # Branch merging
โ โ โโโ remote.py # Remote repositories
โ โ โโโ clone.py # Repository cloning
โ โ โโโ fetch.py # Fetch from remotes
โ โ โโโ pull.py # Pull changes
โ โ โโโ push.py # Push changes
โ โ โโโ stash.py # Stash management
โ โ โโโ reset.py # Reset operations
โ โ โโโ diff.py # Show differences
โ โ โโโ config.py # Configuration management
โ โโโ web/ # Web interface components
โ โ โโโ server.py # FastAPI web server
โ โ โโโ templates/ # HTML templates
โ โ โ โโโ index.html # Main interface template
โ โ โโโ static/ # Static assets
โ โ โโโ css/ # Stylesheets
โ โ โ โโโ style.css # Main dark theme styles
โ โ โโโ js/ # JavaScript files
โ โ โโโ app.js # Frontend application logic
โ โโโ utils/ # Utility functions
โโโ tests/ # Unit tests
โโโ docs/ # Documentation
โโโ pyproject.toml # Project configuration
โโโ requirements.txt # Basic dependencies
โโโ web-requirements.txt # Web interface dependencies
โโโ README.md # This file
```
## ๐ง How It Works
ugit implements the core Git concepts:
### Object Storage
- **Blobs**: Store file contents
- **Trees**: Store directory structures
- **Commits**: Store snapshots with metadata
- Objects are stored by SHA-1 hash in `.ugit/objects/`
### Repository Structure
```
.ugit/
โโโ objects/ # Object storage (blobs, trees, commits)
โโโ refs/heads/ # Branch references
โโโ HEAD # Current branch pointer
โโโ index # Staging area
```
### Commands
| Command | Description | Example |
|---------|-------------|---------|
| `init` | Initialize repository | `ugit init` |
| `add` | Stage files | `ugit add file.txt` |
| `commit` | Create commit | `ugit commit -m "message"` |
| `status` | Show status | `ugit status` |
| `config` | Configuration | `ugit config user.name "John"` |
| `log` | Show history | `ugit log --oneline --graph` |
| `checkout` | Restore files/switch branches | `ugit checkout -b feature` |
| `branch` | Manage branches | `ugit branch -d old-feature` |
| `merge` | Merge branches | `ugit merge feature --no-ff` |
| `diff` | Show changes | `ugit diff --staged` |
| `reset` | Reset changes | `ugit reset --hard HEAD~1` |
| **`stash`** | **Temporarily save changes** | **`ugit stash save "WIP"`** |
| **`stash list`** | **List all stashes** | **`ugit stash list`** |
| **`stash pop`** | **Apply and remove stash** | **`ugit stash pop 1`** |
| **`stash apply`** | **Apply stash (keep it)** | **`ugit stash apply`** |
| **`stash drop`** | **Remove stash** | **`ugit stash drop 0`** |
| `clone` | Clone repository | `ugit clone <url>` |
| `remote` | Manage remotes | `ugit remote add origin <url>` |
| `fetch` | Fetch from remote | `ugit fetch origin` |
| `pull` | Pull changes | `ugit pull origin main` |
| `push` | Push changes | `ugit push -f origin main` |
| **`serve`** | **Start web interface** | **`ugit serve --port 8080`** |
## ๐งช Development
### Setup Development Environment
```bash
# Clone and install in development mode
git clone https://github.com/night-slayer18/ugit.git
cd ugit
pip install -e .[dev]
# Install pre-commit hooks
pre-commit install
```
### Running Tests
```bash
# Run all tests
pytest
# Run with coverage
pytest --cov=ugit
# Run specific test file
pytest tests/test_commands.py
```
### Code Quality
```bash
# Format code
black ugit/ tests/
# Sort imports
isort ugit/ tests/
# Type checking
mypy ugit/
# Linting
flake8 ugit/ tests/
```
## ๐ค Contributing
We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
### Quick Contribution Guide
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Add tests for new functionality
5. Ensure all tests pass (`pytest`)
6. Format your code (`black .` and `isort .`)
7. Commit your changes (`git commit -m 'Add amazing feature'`)
8. Push to your branch (`git push origin feature/amazing-feature`)
9. Open a Pull Request
## ๐ Learning Resources
- [Git Internals](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain)
- [Building Git by James Coglan](https://shop.jcoglan.com/building-git/)
- [Git from the Bottom Up](https://jwiegley.github.io/git-from-the-bottom-up/)
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgments
- Inspired by the excellent Git internals documentation
- Built for educational purposes to understand version control systems
- Thanks to all contributors who help improve this project
## ๐ Support
- ๐ซ Create an [issue](https://github.com/night-slayer18/ugit/issues) for bug reports or feature requests
- ๐ฌ Start a [discussion](https://github.com/night-slayer18/ugit/discussions) for questions
- โญ Star this repository if you find it helpful!
---
Raw data
{
"_id": null,
"home_page": null,
"name": "ugit-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "git, version-control, vcs, educational, minimal",
"author": "night-slayer18",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/86/33/a90a6715c53f9f15130da68cbdc3f3477534ff16e031f922743b3d723778/ugit_cli-1.3.0.tar.gz",
"platform": null,
"description": "# ugit \ud83d\ude80\n\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n[](https://github.com/psf/black)\n\nA minimal Git implementation in Python that demonstrates the core concepts of version control systems. Perfect for learning how Git works under the hood!\n\n## \u2728 Features\n\n### Core Git Functionality\n- **Repository initialization** - Create new ugit repositories\n- **File staging** - Add files to the staging area \n- **Committing** - Create commits from staged changes\n- **History viewing** - Browse commit history with detailed logs\n- **Checkout** - Restore files from specific commits\n- **Status checking** - See which files are modified, staged, or untracked\n- **Branching** - Create, switch, and manage branches\n- **Merging** - Merge branches with conflict resolution\n- **Remotes** - Work with remote repositories (clone, fetch, pull, push)\n- **Stashing** - Temporarily save changes for later (save, list, pop, apply, drop)\n- **Diffing** - Compare changes between commits, files, or working directory\n\n### \ud83c\udf10 Web Interface\n- **Beautiful Dark Mode Interface** - Modern, professional repository browser\n- **File Explorer** - Navigate repository files and directories with ease\n- **Code Viewer** - Syntax-highlighted file viewing with line numbers\n- **Commit History** - Visual commit timeline with detailed information \n- **Real-time Updates** - Dynamic loading of repository data\n- **Responsive Design** - Works perfectly on desktop and mobile devices\n\n## \ufffd Documentation\n\n- **[Installation Guide](docs/installation.md)** - How to install and set up ugit\n- **[User Guide](docs/user-guide.md)** - Complete guide to using ugit commands\n- **[Examples](docs/examples.md)** - Practical examples and use cases\n- **[API Reference](docs/api-reference.md)** - Technical documentation\n- **[Developer Guide](docs/developer-guide.md)** - Guide for contributors\n- **[Architecture](docs/architecture.md)** - System design overview\n- **[FAQ](docs/faq.md)** - Frequently asked questions\n- **[Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions\n\n## \ufffd\ud83d\ude80 Quick Start\n\n### Installation Options\n\n#### Option 1: Basic Installation (CLI Only)\n```bash\npip install ugit-cli\n```\nThis installs the core ugit functionality for command-line usage.\n\n#### Option 2: Full Installation (CLI + Web Interface)\n```bash\npip install ugit-cli[web]\n```\nThis includes the beautiful web interface for browsing repositories.\n\n#### Option 3: Development Installation\n```bash\n# Clone the repository\ngit clone https://github.com/night-slayer18/ugit.git\ncd ugit\n\n# Install in development mode (CLI only)\npip install -e .\n\n# Or install with web interface support\npip install -e .[web]\n```\n\npip install -e .[web]\n```\n\n### Basic Usage\n\n#### Command Line Interface\n```bash\n# Initialize a new repository\nugit init\n\n# Add files to staging area\nugit add file.txt\nugit add .\n\n# Create a commit\nugit commit -m \"Initial commit\"\nugit commit -m \"Commit message\" --author \"Name <email@example.com>\"\n\n# Check repository status\nugit status\n\n# View commit history\nugit log # Full history\nugit log --oneline # Compact view\nugit log --graph # ASCII graph\nugit log -n 5 # Limit to 5 commits\nugit log --since \"2025-01-01\" # Since date\n\n# Checkout commits and branches\nugit checkout <commit-sha> # Checkout specific commit\nugit checkout <branch> # Switch to branch\nugit checkout -b <branch> # Create and switch to branch\n\n# Branch management\nugit branch # List branches\nugit branch <name> # Create branch\nugit branch -d <name> # Delete branch\n\n# Merge branches\nugit merge <branch> # Merge branch\nugit merge <branch> --no-ff # Force merge commit\n\n# Show differences\nugit diff # Working directory changes\nugit diff --staged # Staged changes\nugit diff <commit1> <commit2> # Between commits\n\n# Reset operations\nugit reset # Unstage all files\nugit reset <commit> # Reset to commit (soft)\nugit reset --hard <commit> # Reset to commit (hard)\nugit reset --soft <commit> # Reset to commit (keep staged)\n\n# Stash operations\nugit stash # Stash current changes\nugit stash save \"message\" # Stash with message\nugit stash list # List all stashes\nugit stash pop # Apply and remove latest stash\nugit stash pop 1 # Apply specific stash by index\nugit stash apply # Apply stash without removing\nugit stash drop # Remove stash without applying\nugit stash -u # Include untracked files\n\n# Remote repository operations\nugit clone <url> [directory] # Clone repository\nugit remote # List remotes\nugit remote -v # List remotes with URLs\nugit remote add origin <url> # Add remote\nugit remote remove <name> # Remove remote\nugit remote show <name> # Show remote details\n\n# Fetch, pull, and push\nugit fetch # Fetch from origin\nugit fetch <remote> # Fetch from specific remote\nugit pull # Pull from origin/current branch\nugit pull <remote> <branch> # Pull specific branch\nugit push # Push to origin/current branch\nugit push <remote> <branch> # Push specific branch\nugit push -f # Force push\n\n# Configuration\nugit config user.name \"Your Name\"\nugit config user.email \"you@example.com\"\nugit config --list # List all configuration\n```\n\n#### \ud83c\udf10 Web Interface\n```bash\n# Start the web interface (requires ugit[web] installation)\nugit serve\n\n# Custom host and port\nugit serve --host 0.0.0.0 --port 8080\n\n# Don't open browser automatically\nugit serve --no-browser\n```\n\nThe web interface provides:\n- **Beautiful file browser** with syntax highlighting\n- **Interactive commit history** with timeline view\n- **Responsive design** that works on all devices\n- **Real-time repository exploration** without command line\n\n## \ud83d\udcc1 Project Structure\n\n```\nugit/\n\u251c\u2500\u2500 ugit/ # Main package\n\u2502 \u251c\u2500\u2500 __init__.py # Package initialization\n\u2502 \u251c\u2500\u2500 cli.py # Command-line interface\n\u2502 \u251c\u2500\u2500 core/ # Core functionality\n\u2502 \u2502 \u251c\u2500\u2500 objects.py # Object storage and hashing\n\u2502 \u2502 \u2514\u2500\u2500 repository.py # Repository and index management\n\u2502 \u251c\u2500\u2500 commands/ # Command implementations\n\u2502 \u2502 \u251c\u2500\u2500 init.py # Repository initialization\n\u2502 \u2502 \u251c\u2500\u2500 add.py # File staging\n\u2502 \u2502 \u251c\u2500\u2500 commit.py # Commit creation\n\u2502 \u2502 \u251c\u2500\u2500 log.py # History viewing\n\u2502 \u2502 \u251c\u2500\u2500 checkout.py # File restoration\n\u2502 \u2502 \u251c\u2500\u2500 status.py # Status checking\n\u2502 \u2502 \u251c\u2500\u2500 serve.py # Web interface server\n\u2502 \u2502 \u251c\u2500\u2500 branch.py # Branch management\n\u2502 \u2502 \u251c\u2500\u2500 merge.py # Branch merging\n\u2502 \u2502 \u251c\u2500\u2500 remote.py # Remote repositories\n\u2502 \u2502 \u251c\u2500\u2500 clone.py # Repository cloning\n\u2502 \u2502 \u251c\u2500\u2500 fetch.py # Fetch from remotes\n\u2502 \u2502 \u251c\u2500\u2500 pull.py # Pull changes\n\u2502 \u2502 \u251c\u2500\u2500 push.py # Push changes\n\u2502 \u2502 \u251c\u2500\u2500 stash.py # Stash management\n\u2502 \u2502 \u251c\u2500\u2500 reset.py # Reset operations\n\u2502 \u2502 \u251c\u2500\u2500 diff.py # Show differences\n\u2502 \u2502 \u2514\u2500\u2500 config.py # Configuration management\n\u2502 \u251c\u2500\u2500 web/ # Web interface components\n\u2502 \u2502 \u251c\u2500\u2500 server.py # FastAPI web server\n\u2502 \u2502 \u251c\u2500\u2500 templates/ # HTML templates\n\u2502 \u2502 \u2502 \u2514\u2500\u2500 index.html # Main interface template\n\u2502 \u2502 \u2514\u2500\u2500 static/ # Static assets\n\u2502 \u2502 \u251c\u2500\u2500 css/ # Stylesheets\n\u2502 \u2502 \u2502 \u2514\u2500\u2500 style.css # Main dark theme styles\n\u2502 \u2502 \u2514\u2500\u2500 js/ # JavaScript files\n\u2502 \u2502 \u2514\u2500\u2500 app.js # Frontend application logic\n\u2502 \u2514\u2500\u2500 utils/ # Utility functions\n\u251c\u2500\u2500 tests/ # Unit tests\n\u251c\u2500\u2500 docs/ # Documentation\n\u251c\u2500\u2500 pyproject.toml # Project configuration\n\u251c\u2500\u2500 requirements.txt # Basic dependencies\n\u251c\u2500\u2500 web-requirements.txt # Web interface dependencies\n\u2514\u2500\u2500 README.md # This file\n```\n\n## \ud83d\udd27 How It Works\n\nugit implements the core Git concepts:\n\n### Object Storage\n- **Blobs**: Store file contents\n- **Trees**: Store directory structures \n- **Commits**: Store snapshots with metadata\n- Objects are stored by SHA-1 hash in `.ugit/objects/`\n\n### Repository Structure\n```\n.ugit/\n\u251c\u2500\u2500 objects/ # Object storage (blobs, trees, commits)\n\u251c\u2500\u2500 refs/heads/ # Branch references\n\u251c\u2500\u2500 HEAD # Current branch pointer\n\u2514\u2500\u2500 index # Staging area\n```\n\n### Commands\n\n| Command | Description | Example |\n|---------|-------------|---------|\n| `init` | Initialize repository | `ugit init` |\n| `add` | Stage files | `ugit add file.txt` |\n| `commit` | Create commit | `ugit commit -m \"message\"` |\n| `status` | Show status | `ugit status` |\n| `config` | Configuration | `ugit config user.name \"John\"` |\n| `log` | Show history | `ugit log --oneline --graph` |\n| `checkout` | Restore files/switch branches | `ugit checkout -b feature` |\n| `branch` | Manage branches | `ugit branch -d old-feature` |\n| `merge` | Merge branches | `ugit merge feature --no-ff` |\n| `diff` | Show changes | `ugit diff --staged` |\n| `reset` | Reset changes | `ugit reset --hard HEAD~1` |\n| **`stash`** | **Temporarily save changes** | **`ugit stash save \"WIP\"`** |\n| **`stash list`** | **List all stashes** | **`ugit stash list`** |\n| **`stash pop`** | **Apply and remove stash** | **`ugit stash pop 1`** |\n| **`stash apply`** | **Apply stash (keep it)** | **`ugit stash apply`** |\n| **`stash drop`** | **Remove stash** | **`ugit stash drop 0`** |\n| `clone` | Clone repository | `ugit clone <url>` |\n| `remote` | Manage remotes | `ugit remote add origin <url>` |\n| `fetch` | Fetch from remote | `ugit fetch origin` |\n| `pull` | Pull changes | `ugit pull origin main` |\n| `push` | Push changes | `ugit push -f origin main` |\n| **`serve`** | **Start web interface** | **`ugit serve --port 8080`** |\n\n## \ud83e\uddea Development\n\n### Setup Development Environment\n\n```bash\n# Clone and install in development mode\ngit clone https://github.com/night-slayer18/ugit.git\ncd ugit\npip install -e .[dev]\n\n# Install pre-commit hooks\npre-commit install\n```\n\n### Running Tests\n\n```bash\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=ugit\n\n# Run specific test file\npytest tests/test_commands.py\n```\n\n### Code Quality\n\n```bash\n# Format code\nblack ugit/ tests/\n\n# Sort imports \nisort ugit/ tests/\n\n# Type checking\nmypy ugit/\n\n# Linting\nflake8 ugit/ tests/\n```\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n### Quick Contribution Guide\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes\n4. Add tests for new functionality\n5. Ensure all tests pass (`pytest`)\n6. Format your code (`black .` and `isort .`)\n7. Commit your changes (`git commit -m 'Add amazing feature'`)\n8. Push to your branch (`git push origin feature/amazing-feature`)\n9. Open a Pull Request\n\n## \ud83d\udcda Learning Resources\n\n- [Git Internals](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain)\n- [Building Git by James Coglan](https://shop.jcoglan.com/building-git/)\n- [Git from the Bottom Up](https://jwiegley.github.io/git-from-the-bottom-up/)\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- Inspired by the excellent Git internals documentation\n- Built for educational purposes to understand version control systems\n- Thanks to all contributors who help improve this project\n\n## \ud83d\udcde Support\n\n- \ud83d\udceb Create an [issue](https://github.com/night-slayer18/ugit/issues) for bug reports or feature requests\n- \ud83d\udcac Start a [discussion](https://github.com/night-slayer18/ugit/discussions) for questions\n- \u2b50 Star this repository if you find it helpful!\n\n---\n",
"bugtrack_url": null,
"license": null,
"summary": "A minimal Git implementation in Python",
"version": "1.3.0",
"project_urls": {
"Bug Tracker": "https://github.com/night-slayer18/ugit/issues",
"Documentation": "https://github.com/night-slayer18/ugit/blob/main/README.md",
"Homepage": "https://github.com/night-slayer18/ugit",
"Source Code": "https://github.com/night-slayer18/ugit"
},
"split_keywords": [
"git",
" version-control",
" vcs",
" educational",
" minimal"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "cc30fcd6db5316545a8d2e21ac9acbd5154ed7a39e4183277e89befecea2ef80",
"md5": "44677868fe02baee6b304baca908c59b",
"sha256": "3f6c5a5c1288c3b5a5d072037956c0cf13fda9fcc45f06352b732b2a6aa6d57e"
},
"downloads": -1,
"filename": "ugit_cli-1.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "44677868fe02baee6b304baca908c59b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 71186,
"upload_time": "2025-10-19T06:09:32",
"upload_time_iso_8601": "2025-10-19T06:09:32.968603Z",
"url": "https://files.pythonhosted.org/packages/cc/30/fcd6db5316545a8d2e21ac9acbd5154ed7a39e4183277e89befecea2ef80/ugit_cli-1.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8633a90a6715c53f9f15130da68cbdc3f3477534ff16e031f922743b3d723778",
"md5": "81c9d48956e171715c9881c46bab6bb1",
"sha256": "4cdf0e64ff12f6d1025bb6e25a0abd6ebdd7f88862b11c32ee7dad2a228129c4"
},
"downloads": -1,
"filename": "ugit_cli-1.3.0.tar.gz",
"has_sig": false,
"md5_digest": "81c9d48956e171715c9881c46bab6bb1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 73678,
"upload_time": "2025-10-19T06:09:34",
"upload_time_iso_8601": "2025-10-19T06:09:34.737591Z",
"url": "https://files.pythonhosted.org/packages/86/33/a90a6715c53f9f15130da68cbdc3f3477534ff16e031f922743b3d723778/ugit_cli-1.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-19 06:09:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "night-slayer18",
"github_project": "ugit",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "ugit-cli"
}