From 4ff15cd4223aa397ac8f46ad919a4557eb498aa6 Mon Sep 17 00:00:00 2001 From: Benjamin Motz Date: Tue, 9 Mar 2021 17:15:42 +0100 Subject: [PATCH] Use setup.py entry_points for installation This should make the installation via pip more robust. On Windows the usage of entry_points will install a wrapper executable for the script that chooses the proper python executable. This essentially makes the script run correctly when called via `git filter-repo` (direct execution via `git-filter-repo` was already fine before). This fixes an issue on Windows, where the git-installation will choose a different python executable than the one indicated by the installation via `pip{x,3} install`. Signed-off-by: Benjamin Motz --- git-filter-repo | 5 ++++- release/setup.py | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/git-filter-repo b/git-filter-repo index 568cd3b..b91bd96 100755 --- a/git-filter-repo +++ b/git-filter-repo @@ -3951,7 +3951,7 @@ class RepoFilter(object): print(_("Completely finished after {:.2f} seconds.") .format(time.time()-start)) -if __name__ == '__main__': +def main(): setup_gettext() args = FilteringOptions.parse_args(sys.argv[1:]) if args.analyze: @@ -3959,3 +3959,6 @@ if __name__ == '__main__': else: filter = RepoFilter(args) filter.run() + +if __name__ == '__main__': + main() diff --git a/release/setup.py b/release/setup.py index a616466..0e36611 100644 --- a/release/setup.py +++ b/release/setup.py @@ -1,8 +1,21 @@ from setuptools import setup import os -for f in ['git-filter-repo', 'git_filter_repo.py', 'README.md']: + + +def link_parent(src, target=None): + if target is None: + target = src try: - os.symlink("../"+f, f) + os.symlink(os.path.join("..", src), target) except FileExistsError: pass -setup(use_scm_version=dict(root="..", relative_to=__file__)) + + +for f in ['git-filter-repo', 'README.md']: + link_parent(f) + +link_parent('git-filter-repo', 'git_filter_repo.py') + + +setup(use_scm_version=dict(root="..", relative_to=__file__), + entry_points={'console_scripts': ['git-filter-repo = git_filter_repo:main']})