61

I'm attempting to use git-filter-repo to remove large binaries from my repository. I have not used python before. I installed the latest python by clicking on the downloaded .exe file as that is a requirement of git-filter-repo. The instructions say:

git-filter-repo is a single-file python script, which was done to make installation for basic use trivial: just copy it into your $PATH

https://github.com/newren/git-filter-repo/#how-do-i-install-it

I have tried opening the git-filter-repo.py with the python application. I also can't use cd, ls, or dir in the python application.

CBFT
  • 833

5 Answers5

70

pip install

They now have a python package that just works:

python3 -m pip install --user git-filter-repo

That method installs both the command line executable, and the Python library which you can use as shown here.

The executable is named git-filter-repo, and Git automatically picks up any executable in PATH with name git-* on calls like git *, which is how this works.

Ubuntu 23.04 onwards

On this Ubuntu version or the one before, Ubuntu started adding the supremely annoying (but somewhat understandable) "error: externally-managed-environment" message to any pip install which you can work around with either:

  • sudo apt install pipx
    pipx install git-filter-repo
    

    which places the executable at ~/.local/bin/git-filter-repo.

  • sudo apt install git-filter-repo
    

Related: https://stackoverflow.com/questions/75608323/how-do-i-solve-error-externally-managed-environment-every-time-i-use-pip-3

I juts don't understand why pip stopped working with the good old --user, why do they keep changing the interface every two years!!!

Manual install

If for some reason you don't want to use pip, you can also just:

# Add to bashrc.
export PATH="${HOME}/bin:${PATH}"

mkdir -p ~/bin wget -O ~/bin/git-filter-repo https://raw.githubusercontent.com/newren/git-filter-repo/7b3e714b94a6e5b9f478cb981c7f560ef3f36506/git-filter-repo chmod +x ~/bin/git-filter-repo

Tested on Ubuntu 20.04, git-filter-repo ac039ecc095d.

20

On a Mac, you can install it using homebrew:

$ brew install git-filter-repo

ronen
  • 301
11

This is how I got it to work.

  1. Python should be installed and added to the system's path.
  2. Git should be installed and git also added to the system's path.
  3. Download git-filter-repo
  4. Replace 'python3' on first line of file called git-filter-repo with 'python'. Depending on your python installation, you may skip this step.
  5. Call git --exec-path
  6. Move the git-filter-repo file into that location shown. (git's path).
  7. To use, type git filter-repo. The help option will not work, but they have documentation online.
CBFT
  • 833
4

On a Mac, I simply downloaded https://github.com/newren/git-filter-repo/blob/main/git-filter-repo into my ~/local/bin (which was already on my path and where I keep all my batch files etc). After chmod +x git-filter-repo, I just ran it from my repo dir like: git-filter-repo --path mydir.

DrGo
  • 141
  • 2
1

In 2024 it's already avaiable via APT for Debian/Ubuntu

sudo apt install git-filter-repo