📝 Chore: Add README
This commit is contained in:
parent
7339f7dfc3
commit
17443bd0af
1 changed files with 140 additions and 0 deletions
140
README.md
Normal file
140
README.md
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
# Git Identity Manager
|
||||||
|
|
||||||
|
Git Identity Manager is a command-line tool written in Rust that helps you
|
||||||
|
manage multiple Git identities for your repositories. It allows you to add new
|
||||||
|
identities, view stored identities, and apply an identity to the local Git
|
||||||
|
repository (without affecting your global configuration).
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Git Identity Manager stores your Git identities (name and email) in a
|
||||||
|
human-readable TOML configuration file located in an OS-appropriate directory:
|
||||||
|
|
||||||
|
- **Linux/Unix:** `$XDG_CONFIG_HOME/git_identity_manager/git_identities.toml`
|
||||||
|
(or defaults to `$HOME/.config/git_identity_manager/git_identities.toml`)
|
||||||
|
- **macOS:** `$HOME/Library/Application
|
||||||
|
Support/git_identity_manager/git_identities.toml`
|
||||||
|
- **Windows:** `%APPDATA%\git_identity_manager\git_identities.toml`
|
||||||
|
|
||||||
|
When you run the tool inside a Git repository, it presents an interactive menu
|
||||||
|
that allows you to:
|
||||||
|
|
||||||
|
- **Select an Existing Identity:** Choose from a list of saved identities to
|
||||||
|
apply locally.
|
||||||
|
- **Add a New Identity:** Input a new Git name and email. The name is used as
|
||||||
|
the display name, while a sanitized version (spaces replaced with underscores)
|
||||||
|
is used as the key in the configuration file.
|
||||||
|
- **Quit:** Exit the program without making any changes.
|
||||||
|
|
||||||
|
Once an identity is applied, the tool sets the local Git configuration (i.e.,
|
||||||
|
`git config user.name` and `git config user.email`), overwriting any existing
|
||||||
|
local settings.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- [Rust](https://www.rust-lang.org/tools/install) (latest stable release is
|
||||||
|
recommended)
|
||||||
|
- A Git repository (to test local Git identity settings)
|
||||||
|
|
||||||
|
### Build and Install
|
||||||
|
|
||||||
|
1. **Clone the Repository:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://git.musselman.dev/Musselman/git-identity-manager
|
||||||
|
cd git-identity-manager
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Build the Project:**
|
||||||
|
|
||||||
|
Use Cargo to build the project:
|
||||||
|
|
||||||
|
`bash cargo build --release`
|
||||||
|
|
||||||
|
The compiled binary will be available in the `target/release` directory.
|
||||||
|
|
||||||
|
3. **(Optional) Install the Binary:**
|
||||||
|
|
||||||
|
You can install the binary to your system (if you have Cargo's bin directory
|
||||||
|
in your PATH):
|
||||||
|
|
||||||
|
`bash cargo install --path .`
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Run the tool from within a Git repository directory using the appropriate binary:
|
||||||
|
|
||||||
|
`./git-identity-manager` or `git-identity-manager.exe`
|
||||||
|
|
||||||
|
Upon running, you will see a menu similar to this:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
=== Git Identity Manager ===
|
||||||
|
|
||||||
|
Available identities:
|
||||||
|
1. James_Musselman: James Musselman <email@example.com>
|
||||||
|
|
||||||
|
Options: [number] - Select and set that identity
|
||||||
|
a - Add a new identity
|
||||||
|
q - Quit
|
||||||
|
|
||||||
|
Enter your choice:
|
||||||
|
```
|
||||||
|
|
||||||
|
### Options
|
||||||
|
|
||||||
|
- **Selecting an Identity:** Enter the corresponding number to apply the
|
||||||
|
identity. The tool will run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git config user.name "James Musselman"
|
||||||
|
git config user.email "email@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
_Note:_ These commands will update your local repository's Git configuration.
|
||||||
|
|
||||||
|
- **Adding a New Identity:** Type `a` and follow the prompts to enter a Git
|
||||||
|
name and email address.
|
||||||
|
|
||||||
|
- **Key Sanitization:** If your Git name contains spaces (e.g., "James
|
||||||
|
Musselman"), spaces will be replaced with underscores when saving as a key,
|
||||||
|
but the display and applied identity remain unchanged.
|
||||||
|
- After adding, the new identity is saved to the configuration file and
|
||||||
|
immediately applied locally.
|
||||||
|
|
||||||
|
- **Quitting:** Enter `q` to exit without making any changes.
|
||||||
|
|
||||||
|
## Configuration File
|
||||||
|
|
||||||
|
The identities are stored in a TOML file in an OS-appropriate directory. A
|
||||||
|
sample configuration file may look like:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[identities.James_Musselman]
|
||||||
|
name = "James Musselman"
|
||||||
|
email = "email@example.com"
|
||||||
|
|
||||||
|
[identities.Jane_Doe]
|
||||||
|
name = "Jane Doe"
|
||||||
|
email = "jane.doe@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
Each identity is stored under a key where spaces in the Git name are replaced
|
||||||
|
with underscores.
|
||||||
|
|
||||||
|
## Overwriting Behavior
|
||||||
|
|
||||||
|
When applying an identity, the tool uses `git config` (without the `--global`
|
||||||
|
flag) to set the identity in the local repository configuration. This will
|
||||||
|
overwrite any existing local Git identity settings.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions are welcome! Please fork the repository and submit a pull request
|
||||||
|
with your changes.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the [MIT License](LICENSE).
|
Loading…
Add table
Reference in a new issue