summaryrefslogtreecommitdiff
path: root/git-filter-branch.sh
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2015-10-07 13:38:18 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2015-10-07 13:38:18 -0700
commita23d263b69d353e6945281cd1a19fa6f1d0aaeee (patch)
tree91fac2d6ef2bfd1b611d5ce383ac603795b665ce /git-filter-branch.sh
parentMerge branch 'nd/ignore-then-not-ignore' (diff)
parentfilter-branch: make report-progress more readable (diff)
downloadtgif-a23d263b69d353e6945281cd1a19fa6f1d0aaeee.tar.xz
Merge branch 'gb/filter-branch-progress'
Give progress meter to "git filter-branch". * gb/filter-branch-progress: filter-branch: make report-progress more readable filter-branch: add passed/remaining seconds on progress
Diffstat (limited to 'git-filter-branch.sh')
-rwxr-xr-xgit-filter-branch.sh32
1 files changed, 31 insertions, 1 deletions
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 5b3f63d8bb..5777947a5d 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -275,11 +275,41 @@ commits=$(wc -l <../revs | tr -d " ")
test $commits -eq 0 && die "Found nothing to rewrite"
# Rewrite the commits
+report_progress ()
+{
+ if test -n "$progress" &&
+ test $git_filter_branch__commit_count -gt $next_sample_at
+ then
+ count=$git_filter_branch__commit_count
+
+ now=$(date +%s)
+ elapsed=$(($now - $start_timestamp))
+ remaining=$(( ($commits - $count) * $elapsed / $count ))
+ if test $elapsed -gt 0
+ then
+ next_sample_at=$(( ($elapsed + 1) * $count / $elapsed ))
+ else
+ next_sample_at=$(($next_sample_at + 1))
+ fi
+ progress=" ($elapsed seconds passed, remaining $remaining predicted)"
+ fi
+ printf "\rRewrite $commit ($count/$commits)$progress "
+}
git_filter_branch__commit_count=0
+
+progress= start_timestamp=
+if date '+%s' 2>/dev/null | grep -q '^[0-9][0-9]*$'
+then
+ next_sample_at=0
+ progress="dummy to ensure this is not empty"
+ start_timestamp=$(date '+%s')
+fi
+
while read commit parents; do
git_filter_branch__commit_count=$(($git_filter_branch__commit_count+1))
- printf "\rRewrite $commit ($git_filter_branch__commit_count/$commits)"
+
+ report_progress
case "$filter_subdir" in
"")