A command line tool for people of transgender experience to replace their deadname within a Git repo.

Related tags

Command-line chowndn
Overview

chowndn

(Change Owner from Dead Name)

A command line tool for people of transgender experience to replace their dead name within a Git repo. See chowndn.com.

Transgender Flag *Transgender Pride flag from Wikipedia

This repo is currently VAPORWARE -- it does not have any functionality beyond providing a CLI interface to start developing on.

The primary purpose of releasing a functionally non-working repository is to provide a framework to problem solve a difficult problem -- how to rewrite history within a Git repo without compromising an existing codebase.

The secondary purpose of releasing a bare-bones scaffold is to encourage community involvement from a diverse and inclusive audience, who would benefit from learning Rust and Git along the way. By starting from scratch, we have the opportunity to learn these tools from humble beginnings without the pressure of coming in with a particular skill set. Imposter syndrome is real -- please do not let it prevent you from leveraging this project as a means to learn and connect with the community!

Ideally, this tool will be able to checkout and commit in-place rewrites to keep the original repo intact. If this is not possible, or as an alternate implementation offered through an option flag, a new repo instance could be generated with the desired name changes. The latter will not work for many use cases, but could still be sufficient for some.

Basic command interface (see Makefile):

chowndn version
chowndn scan Jack ./myrepo
chowndn replace Jack Jill ./myrepo

Expected workflow:

  • Clone a repo.
  • Create a working branch from main.
  • Scan for original name instances. Save this output to a file.
  • Replace instances of deadname with the new name. Save this output to a file.
  • Diff the two files to ensure only the modifications desired are present.

Unknown handling:

  • Rename the main branch, and rename the working branch to main.
  • Force push the new main branch. For each non-temporary branch, set its origin to the new main.

Careful thought and Git expertise will be critical to solving this problem correctly. See the GitHub Issues for this repo as a means of having discussions on approaching individual technical challenges. For informal discussion, use the #chowndn hashtag and tag @chrmi on Mastodon.

You might also like...
A command-line tool and Docker image to automatically backup Git repositories from GitHub or anywhere

A command-line tool and Docker image to automatically backup Git repositories from GitHub or anywhere

a command-line tool that transforms a Git repository into a minimal format for ChatGPT queries
a command-line tool that transforms a Git repository into a minimal format for ChatGPT queries

gprepo /dʒiːpiːˈɹi:pi:oʊ/ a command-line tool that transforms a Git repository into a minimal format for ChatGPT queries. Features Excludes LICENSE an

Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

Quick, lightweight find and replace cli tool.

quick-replace A fast, lightweight find and replace tool Usage quick-replace [OPTIONS] FROM TO path/to/file.txt Options Flag Description -h Displ

git-cliff can generate changelog files from the Git history by utilizing conventional commits as well as regex-powered custom parsers.⛰️
git-cliff can generate changelog files from the Git history by utilizing conventional commits as well as regex-powered custom parsers.⛰️

git-cliff can generate changelog files from the Git history by utilizing conventional commits as well as regex-powered custom parsers. The changelog template can be customized with a configuration file to match the desired format.

🧠 A command-line utility for switching git branches more easily. Switch branches interactively or use a fuzzy search to find that long-forgotten branch name.
🧠 A command-line utility for switching git branches more easily. Switch branches interactively or use a fuzzy search to find that long-forgotten branch name.

git-smart-checkout A git command extension for switching git branches more efficiently. About Interactively switch branches or fuzzy search for that f

Gix is a command-line interface (CLI) to access git repositories

gix is a command-line interface (CLI) to access git repositories. It's written to optimize the user-experience, and perform as good or better than the

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful but still need to give weekly status updates to their boss without getting depressed and convincing themselves they did nothing because they can't remember what they did!

🦀️atos for linux by rust - A partial replacement for Apple's atos tool for converting addresses within a binary file to symbols.

atosl-rs 🦀️ atos for linux by rust - A partial replacement for Apple's atos tool for converting addresses within a binary file to symbols. tested on

Comments
  • Git only solution

    Git only solution

    This solution is based on this stackoverflow. If the below solution doesn't work, you should look at the stackoverflow. There's a good chance another one of the tools might (filter-repo being a contender)

    The solution uses git-filter-branch to rewrite all of history (if we could only do that in real life).

    Replace the below variables (OLD_EMAIL, etc etc with approprate values). If your email hasn't changed, just your name, use the same value for OLD_EMAIL and CORRECT_EMAIL.

    #!/bin/sh
    
    git filter-branch --env-filter '
    OLD_EMAIL="[email protected]"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="[email protected]"
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    

    Then once thats done, run git update-ref -d refs/original/refs/heads/master to remove the duplicate entries from the git history.

    Then of course, git push you may need to do git push --force. If you dont have permissions, ask whoever owns the repo to do the above!

    As an aside, making this into a python or shell script with interactive prompts isn't the worst idea! Not everyone is happy screwing around with git.

    opened by deidyomega 1
  • Basic Unit Tests

    Basic Unit Tests

    Before writing any logic beyond the boilerplate Clap library implementation, unit tests should be written which can then be made to pass. For each command (replace, scan, version), create a unit tests to verify placeholder strings are displayed. Account for various arguments passed to the functions, but do not include testing the Clap library implementation itself.

    good first issue 
    opened by chrmi 0
  • Add code comments throughout

    Add code comments throughout

    This project should go much beyond the standard level of comments to the degree of not only being self-documenting code, but further, bias to tutorial content linking to Rust documentation for even the basic idioms to support contributors who have never written a line of Rust.

    This will be an ongoing effort -- scope of this issue is to create a first attempt as a guide to future code comment and documenting standards for the repo.

    opened by chrmi 0
Owner
Christi Miller
Trans woman living in the desert, searching for zen. Product leader in tech, photographer, traveler. She/her.
Christi Miller
A versatile and dynamic music bot designed to elevate the musical experience within Discord servers.

Masayoshi Masayoshi is a discord music bot written in Rust for making a great experience within Discord servers with support to Youtube, SoundCloud, S

null 6 Dec 26, 2023
Mafa is a command-line tool that helps people interact with online websites in a terminal(tty).

Table of Contents A Small Demo Installation Prerequisite Option 1: Cargo install (recommended) Option 2: Build from source Option 3: Prebuilt binaries

Michael Lee 6 Jul 10, 2023
Mafa is a command-line tool that helps people interact with online websites in a terminal(tty).

A Small Demo Installation Prerequisite Option 1: Cargo install (recommended) Option 2: Build from source Option 3: Prebuilt binaries Mafa is for me? W

Michael Lee 6 Jul 23, 2023
Oxygen is a voice journal and audio analysis toolkit for people who want to change the way their voice comes across.

Oxygen Voice Journal Oxygen is a voice journal and audio analysis toolkit for people who want to change the way their voice comes across. Or rather, i

Jocelyn Stericker 32 Oct 20, 2022
Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers

Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers. It deals only with integer arithmetic. Expressions may involve mixed bases (limited to decimal, hexadecimal, octal and binary numbers). The global output format may be set to a particular radix - by default it is hex.

Deep Majumder 50 Dec 22, 2022
A command-line utility which aligns a block of text within the terminal (or a specified number of columns), written in Rust.

align: a command line utility for aligning text. ⭐ Overview Aligns text within the terminal (or a specified number of columns). The text is treated as

Khalil Ouali 6 Aug 11, 2023
A git sub-command to view your git repository in the web browser

git-view A git sub-command to view your git repository in the web browser! About Are you also frustrated from moving your hands away from the keyboard

Hamothy 5 Sep 26, 2022
A Rust CLI tool that helps you enforce Git policies through Git hooks both server and client side

GitPolicyEnforcer This is a command line utility written in Rust, that helps you utilize Git hooks, to enforce various policies. It currently supports

Vagelis Prokopiou 4 Aug 14, 2022
Git Explorer: cross-platform git workflow improvement tool inspired by Magit

Gex Git workflow improvement CLI tool inspired by Magit. This project is still under initial development, but I am actively dogfooding it and features

Peter Hebden 204 Jan 6, 2023