You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
git-filter-repo/t/t9391/print_progress.py

45 lines
1.5 KiB
Python

#!/usr/bin/env python
# python makes importing files with dashes hard, sorry. Renaming would
# allow us to simplify this to
# import git_repo_filter
# However, since git style commands are dashed and git-filter-repo is used more
# as a tool than a library, renaming is not an option, so import is 5 lines:
import imp
import sys
sys.dont_write_bytecode = True # .pyc generation -> ugly 'git-filter-repoc' files
with open("../../../git-filter-repo") as f:
repo_filter = imp.load_source('repo_filter', "git-filter-repo", f)
# End of convoluted import of git-filter-repo
if len(sys.argv) != 3:
raise SystemExit("Syntax:\n %s SOURCE_REPO TARGET_REPO")
source_repo = sys.argv[1]
target_repo = sys.argv[2]
total_objects = repo_filter.GitUtils.get_total_objects(source_repo) # blobs+trees
total_commits = repo_filter.GitUtils.get_commit_count(source_repo)
object_count = 0
commit_count = 0
def print_progress():
global object_count, commit_count, total_objects, total_commits
print "\rRewriting commits... %d/%d (%d objects)" \
% (commit_count, total_commits, object_count),
def my_blob_callback(blob):
global object_count
object_count += 1
print_progress()
def my_commit_callback(commit):
global commit_count
commit_count += 1
print_progress()
args = repo_filter.FilteringOptions.parse_args(['--force', '--quiet'])
filter = repo_filter.RepoFilter(args,
blob_callback = my_blob_callback,
commit_callback = my_commit_callback)
filter.run()