跳转至

GitWino

GitWino - powerful tool for querying and analyzing Git repository history

项目信息
仓库 https://github.com/Maicarons/GitWino
在线体验 https://gitwino.netlify.app/
主要语言 Go
Stars 1
类型 原创项目
许可证 Apache-2.0
最近更新 2026-03-30
主题 commit · git · github

GitWino

GitWino Screenshot

Languages: English | 中文

GitWino is a powerful tool for querying and analyzing Git repository history. It provides detailed timeline information about code commits, repository creation, version tags, and releases across multiple Git platforms.

License Go Version

Features

  • Multi-Platform Support: Supports GitHub, Gitee, and GitLab
  • Comprehensive Timeline: Query the following key timestamps:
  • First code commit time
  • Repository creation time
  • First version tag time
  • First release time
  • Time Zone Display: Shows both UTC and local time for all timestamps
  • Time Difference Analysis: Automatically calculates time differences between events
  • Export Options: Export results as JSON or image
  • Modern UI: Beautiful gradient interface with responsive design
  • Multi-Language: Supports Chinese, English, Korean, and French

Technology Stack

Backend

  • Language: Go 1.25.0
  • Web Framework: Gin
  • Git Library: go-git/v5
  • Deployment: Vercel serverless deployment support

Frontend

  • UI Framework: Layui
  • Libraries: html2canvas (for image export)
  • CDN: BootCDN for fast asset delivery

Installation

Local Development

  1. Clone the repository

    git clone https://github.com/Maicarons/GitWino.git
    cd gitwino
    

  2. Install dependencies

    go mod download
    

  3. Run the application

    go run main.go
    

  4. Access the application Open your browser and navigate to http://localhost:8080

Deploy to Vercel

GitWino supports serverless deployment on Vercel:

  1. Install Vercel CLI:

    npm install -g vercel
    

  2. Deploy:

    vercel
    

The vercel.json configuration file is already included in the project.

Usage

  1. Enter Repository URL: Input a Git repository URL (supports GitHub, Gitee, or GitLab)
  2. Example: https://github.com/owner/repo
  3. Example: https://gitee.com/owner/repo
  4. Example: https://gitlab.com/owner/repo

  5. Click Search: The system will automatically:

  6. Clone the repository temporarily
  7. Analyze commit history
  8. Query platform APIs for creation and release information
  9. Calculate time differences between events

  10. View Results: Results include:

  11. Repository URL
  12. First commit time (with UTC and local time)
  13. Repository creation time (with time difference from first commit)
  14. First tag time (with time difference from first commit)
  15. First release time (with time difference from first commit)

  16. Export Data:

  17. Click "Export JSON" to download data in JSON format
  18. Click "Export Image" to save results as a PNG image

API Reference

Query Repository History

Endpoint: GET /api

Parameters: - repo (required): Git repository URL

Response Example:

{
  "earliest_commit_time": "2020-01-15T08:30:00Z",
  "repo_creation_time": "2020-01-10T12:00:00Z",
  "earliest_tag_time": "2020-02-01T10:00:00Z",
  "earliest_release_time": "2020-02-05T14:30:00Z",
  "repo_url": "https://github.com/owner/repo.git"
}

Error Response:

{
  "error": "Error message description"
}

Project Structure

gitwino/
├── api/                    # API handlers
│   └── index.go           # HTTP request handlers
├── frontend/              # Frontend static files
│   ├── index.html        # Main HTML page
│   ├── app.js            # Application logic
│   ├── style.css         # Styles
│   └── i18n.js           # Internationalization
├── internal/git/          # Git service implementation
│   ├── providers/        # Platform-specific providers
│   │   ├── github.go     # GitHub API integration
│   │   ├── gitee.go      # Gitee API integration
│   │   ├── gitlab.go     # GitLab API integration
│   │   └── provider_manager.go  # Provider management
│   ├── git.go           # Main Git logic
│   ├── repository.go    # Repository operations
│   └── types.go         # Data structures
├── main.go              # Application entry point
├── go.mod               # Go module definition
├── go.sum               # Dependency checksums
└── vercel.json          # Vercel deployment config

Supported Platforms

  • GitHub: Full support for commit history, repository creation, tags, and releases
  • Gitee: Support for commit history, repository creation, and releases
  • GitLab: Full support for commit history, repository creation, tags, and releases
  • Other Platforms: Limited support for commit history

How It Works

  1. URL Parsing: The system identifies the Git platform from the repository URL
  2. Repository Cloning: Temporarily clones the repository using go-git
  3. Commit Analysis: Scans all branches to find the earliest commit
  4. Tag Analysis: Finds the earliest tag by commit time
  5. API Integration: Queries platform APIs for repository creation and release times
  6. Data Processing: Calculates time differences and formats timestamps
  7. Result Display: Presents data with both UTC and local time zones

Development

Requirements

  • Go 1.25.0 or higher
  • Node.js (optional, for Vercel CLI)

Build

go build -o gitwino main.go

Run Tests

go test ./...

Limitations

  • Private repositories require API token configuration (not yet implemented)
  • Very large repositories may take longer to analyze due to cloning time
  • Some platforms may have API rate limits

Future Enhancements

  • Support for private repositories with authentication
  • Additional Git platform support (Bitbucket, etc.)
  • Historical statistics and charts
  • Batch repository analysis
  • API token configuration interface

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the Apache 2.0 License.

Acknowledgments

Contact


Made with ❤️ by Maicarons