{"id":28839243,"url":"https://github.com/matsjfunke/wer","last_synced_at":"2025-08-30T04:08:47.750Z","repository":{"id":297843962,"uuid":"997806365","full_name":"matsjfunke/wer","owner":"matsjfunke","description":"⁉️ wer ⁉️  is a cli tool to help you find who last edited a file or directory","archived":false,"fork":false,"pushed_at":"2025-06-18T10:30:22.000Z","size":382,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-30T01:17:23.084Z","etag":null,"topics":["cli-tool","filehistory","git","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/wer","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matsjfunke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-07T08:14:17.000Z","updated_at":"2025-07-21T19:55:55.000Z","dependencies_parsed_at":"2025-06-07T21:32:09.099Z","dependency_job_id":null,"html_url":"https://github.com/matsjfunke/wer","commit_stats":null,"previous_names":["matsjfunke/wer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matsjfunke/wer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsjfunke%2Fwer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsjfunke%2Fwer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsjfunke%2Fwer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsjfunke%2Fwer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matsjfunke","download_url":"https://codeload.github.com/matsjfunke/wer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsjfunke%2Fwer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272800965,"owners_count":24995185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli-tool","filehistory","git","rust"],"created_at":"2025-06-19T14:10:28.142Z","updated_at":"2025-08-30T04:08:47.731Z","avatar_url":"https://github.com/matsjfunke.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Crates.io](https://img.shields.io/crates/v/wer.svg)](https://crates.io/crates/wer)\n[![Tests](https://github.com/matsjfunke/wer/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/matsjfunke/wer/actions/workflows/test.yml)\n[![Crates.io](https://img.shields.io/crates/d/wer.svg)](https://crates.io/crates/wer)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)\n\n# ⁉️ wer ⁉️\n\n`wer` (German \"who\") is a command-line tool for answering that everyday question:\n\n\u003e _Who touched this last?!_\n\nNo more complex `git log` commands, no more hunting for exact file paths. `wer` gives you context aware file / directory search.\n`wer` offers both file-level recency and line-specific history through its `blame mode`, bridging the gap between `git blame` and `git-who` plus offering features like smart file finding and syntax highlighting.\n\n![Normal Mode](./screenshots/normal-mode.png)\n\n## 🚀 Quick Start\n\n```bash\n# install wer\ncargo install wer\n\n# Find who last edited any file\nwer main.rs\n\n# Show last 3 contributors to a directory\nwer -l 3 src/\n```\n\n## 📚 Table of Contents\n\n- [📦 Installation](#-installation)\n- [🎮 Usage](#usage)\n  - [🏁 All Flags](#-all-flags)\n  - [✨ Smart Path Resolution](#-smart-path-resolution)\n  - [🎮 Basic Usage](#-basic-usage)\n  - [👥 Last Contributors](#-last-contributors)\n  - [🫵 Blame Mode](#-blame-mode)\n  - [🎨 Display Options](#-display-options)\n- [👨‍💻 Contributing](#-contributing)\n- [📑 License](#-license)\n\n## 📦 Installation\n\n**From crates.io (Recommended)**\n\n```bash\n#install cargo\ncurl https://sh.rustup.rs -sSf | sh\n# install wer crate\ncargo install wer\n```\n\n**From Source**\n\n```bash\n#install cargo\ncurl https://sh.rustup.rs -sSf | sh\n# clone repository\ngit clone https://github.com/matsjfunke/wer\n# install wer\ncd wer\ncargo install --path .\n```\n\n## Usage\n\n### 🏁 All Flags\n\n| Flag                   | Description                                       |\n| ---------------------- | ------------------------------------------------- |\n| `-l, --last N`         | Show last N contributors (normal mode only)       |\n| `-b, --blame`          | Show git blame for files with syntax highlighting |\n| `-d, --date-only`      | Show dates only (mutually exclusive with -m)      |\n| `-m, --commit-message` | Show commit messages on next line                 |\n| `--no-color`           | Disable colors and syntax highlighting            |\n| `-v, --version`        | Print version information                         |\n| `-h, --help`           | Show help information                             |\n\n### ✨ Smart Path Resolution\n\n`wer` automatically finds files and directories by name and intelligently handles different path types:\n\n```bash\n# Just type the filename - wer finds it automatically\nwer main.rs                 # Finds src/main.rs\nwer Cargo.toml             # Finds ./Cargo.toml\n\n# Works with directories too\nwer src/                   # Works from anywhere in the repository\n\n# Relative paths work across repositories\nwer ../other-project/file.rs    # Finds the git repo in ../other-project/\nwer ./subdir/file.py           # Within current repository\n\n# For absolute paths, use full paths to skip search\nwer ~/Documents/file.txt   # Uses absolute path directly\nwer /full/path/to/file     # No search, direct access\n\n# Shows multiples matches in normal mode\nwer config.toml\n# → src/config.toml:\n# → 61fcdda Mats Julius Funke - 07 Jun 2025: Update config\n# →\n# → tests/config.toml:\n# → a1b2c3d Jane Doe - 05 Jun 2025: Add test config\n```\n\n**Path Types Supported:**\n\n| Path Type                    | Example                    | Behavior                                     |\n| ---------------------------- | -------------------------- | -------------------------------------------- |\n| **Filename**                 | `main.rs`                  | Searches recursively in current directory    |\n| **Relative in current repo** | `./src/main.rs`            | Checks path directly in current repository   |\n| **Relative outside repo**    | `../other-project/file.rs` | Resolves path and finds appropriate git repo |\n| **Absolute path**            | `/full/path/to/file`       | Uses path directly                           |\n| **Home directory**           | `~/Documents/file.txt`     | Expands tilde and uses directly              |\n\n### 🎮 Basic Usage\n\n```bash\n# Check who last edited a file\nwer Cargo.toml\n# → 61fcdda Mats Julius Funke - 07 Jun 2025: Initial commit\n\n# Check who last edited a directory\nwer src\n# → 61fcdda Mats Julius Funke - 07 Jun 2025: Added new module\n\n# Check files in other repositories using relative paths\nwer ../other-project/README.md\n# → a1b2c3d Jane Doe - 05 Jun 2025: Update documentation\n\n# Check current directory\nwer\n# → 61fcdda Mats Julius Funke - 07 Jun 2025: Latest changes\n```\n\n### 👥 Last Contributors\n\n![Last Mode](./screenshots/last-mode.png)\n\nFind the last N unique people who touched a file or directory:\n\n```bash\n# Show last 5 contributors\nwer -l 5 src/\n# → a1b2c3d George Boole - 1854: feat: introduce Boolean algebra and logical foundations\n# → e4f5g6h Alan Turing - 30 Nov 1936: feat: develop theoretical computing foundations\n# → i7j8k9l Claude Shannon - Jul 1948: feat: establish information theory and digital communication\n# → m0n1o2p Steve Wozniak - Jul 1976: feat: launch personal computing revolution\n# Searched for 5 but only 4 contributed  # (if fewer found)\n```\n\n### 🫵 Blame Mode\n\n![Blame Mode](./screenshots/blame-mode.png)\n\nShow git blame with syntax highlighting for any file:\n\n```bash\n# Show blame with full commit info and syntax highlighting\nwer -b main.rs              # Automatically finds src/main.rs\n# → 61fcdda (Mats Julius Fun - 07 Jun) |  1 | use anyhow::Result;\n# → 6b70ffb (Mats Julius Fun - 07 Jun) |  2 | use clap::Parser;\n```\n\n### 🎨 Display Options\n\n![Blame Mode date-only](./screenshots/blame-mode-date-only.png)\n\n```bash\n# Show only dates\nwer -d main.rs\n# → 07 Jun 2025\n\nwer -b -d main.rs          # Blame with dates only\n# → 07 Jun |  1 | use anyhow::Result;\n# → 07 Jun |  2 | use clap::Parser;\n\n# Show commit messages on separate lines\nwer -m main.rs\n# → 61fcdda Mats Julius Funke - 07 Jun 2025\n#     Initial commit\nwer -b -m main.rs          # Blame with commit messages\n# → 61fcdda (Mats Julius Fun - 07 Jun) |  1 | use anyhow::Result;\n#     Initial commit\n\n# Disable colors and syntax highlighting\nwer --no-color -b main.rs\n```\n\n## 👨‍💻 Contributing\n\nContributions welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## 📑 License\n\nThis project is licensed under the MIT License - see [LICENSE.md](LICENSE.md) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatsjfunke%2Fwer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatsjfunke%2Fwer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatsjfunke%2Fwer/lists"}