git-editor-0.1.0 is not a library.
Git Editor: Git History Rewriting Tool
Git Editor is a powerful Rust-based command-line utility designed to safely rewrite Git commit timestamps within a specified date range. Perfect for fixing commit dates, adding consistency to repositories, or reconstructing development timelines.
Features
- Rewrite commit timestamps within a specified date range
- Preserve commit order and relationships
- Maintain author and committer information
- Compatible with any Git repository
- Docker support for containerized execution
Installation
Prerequisites
- Rust 1.72+ (Install Rust)
- Git (Install Git)
- OpenSSL development libraries
From Source
# Clone the repository
# Build the project
# The binary will be available at target/release/git-editor
Usage
Arguments
Option | Description |
---|---|
--repo-path |
Path to the Git repository |
--email |
Email address to associate with rewritten commits |
--name |
Name to associate with rewritten commits |
--start |
Start date for commits (format: YYYY-MM-DD HH:MM:SS) |
--end |
End date for commits (format: YYYY-MM-DD HH:MM:SS) |
Examples
# Rewrite commits to occur between January 1 and January 7, 2023
# Using the Makefile (after editing the parameters)
How It Works
Git Editor operates by:
- Validating the provided repository path and Git environment
- Generating a list of timestamps between the start and end dates
- Creating a mapping between original commits and new commit timestamps
- Rewriting the Git history while preserving parent-child relationships
- Updating branch references to point to the new commit history
The tool ensures that commit order is maintained and distributes commits evenly across the specified time range.
Warning
This tool rewrites Git history. Always work on a separate branch or backup your repository before running Git Editor on important code bases.
Development
Project Structure
git-editor/
├── src/
│ ├── main.rs # Entry point
│ ├── args.rs # Command line argument handling
│ ├── datetime.rs # Date and time functions
│ ├── validator.rs # Input validation
│ ├── rewrite.rs # Git history rewriting logic
│ ├── types.rs # Type definitions
│ ├── heatmap.rs # GitHub contribution data handling
│ └── utils/ # Utility functions
├── Cargo.toml # Project dependencies
├── Dockerfile # Docker configuration
└── Makefile # Build automation
Testing
License
This project is licensed under the MIT License - see the LICENSE file for details.