Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dyng/blamehim
Modify last modifier of repository as you like
https://github.com/dyng/blamehim
Last synced: 6 days ago
JSON representation
Modify last modifier of repository as you like
- Host: GitHub
- URL: https://github.com/dyng/blamehim
- Owner: dyng
- Created: 2013-08-01T15:19:39.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2013-08-05T07:09:53.000Z (over 11 years ago)
- Last Synced: 2024-04-22T05:10:08.518Z (7 months ago)
- Language: Shell
- Homepage:
- Size: 121 KB
- Stars: 13
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BlameHim
Still feel shame while writting pieces of shit, and is afraid of being disclosed someday by `git blame`? Then it is for you.
## Usage
*blamehim* is a simple shell script that can change the author of lines to someone you specified. Thanks to git's loose permission management, you can disguise as anybody if you know his username and email address, and making it even easier, *blamehim* will do it for you. When someone blame this file, they will see the victim's name rather than yours.
## How it works
There are two modes in blamehim: *hard-mode* and *soft-mode*.
### soft mode
It is simple. *blamehim* apends a space to lines you specified, temporarily changes `user.name` and `use.email` to your victim's, makes commit, restores your own username and email address, done.
##### how to undo
In soft-mode, *blamehim* just append an extra fake commit and won't hurt existing history, so it is safe. You can simply undo it by `git reset --hard HEAD~`.### hard mode
Unlike soft-mode, hard-mode use `git filter-branch` to rewrite almost entire history if necessary. *blamehim* run in soft-mode by default, use `-f` to enable hard-mode, likeblamehim -f -a badguy 1-$ file
Remember that hard-mode may cost a pretty long time to complete.
##### how to undo
You can find your original branch header under `.git/refs/original`, or refer to `git reflog`. If you found it, `git reset` will do the job.## Example
First I have a file and blamed like this:
f8d5ce00 (dyng 2013-08-01 23:55:22 +0900 1) foo
f8d5ce00 (dyng 2013-08-01 23:55:22 +0900 2) bar
f8d5ce00 (dyng 2013-08-01 23:55:22 +0900 3) fooThen I run script like this:
blamehim -a badguy -e [email protected] 1-$ file
Here is the blame result after things done:
d009b43c (badguy 2013-08-02 00:02:41 +0900 1) foo
d009b43c (badguy 2013-08-02 00:02:41 +0900 2) bar
d009b43c (badguy 2013-08-02 00:02:41 +0900 3) foo