Skip to content

Commit

Permalink
filter-branch: add passed/remaining seconds on progress
Browse files Browse the repository at this point in the history
adds seconds progress and estimated seconds time if getting the current
timestamp is supported by the date +%s command

Signed-off-by: Gabor Bernat <gabor.bernat@gravityrd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Gabor Bernat authored and Junio C Hamano committed Sep 21, 2015
1 parent a17c56c commit 6a9d16a
Showing 1 changed file with 29 additions and 1 deletion.
30 changes: 29 additions & 1 deletion git-filter-branch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -275,11 +275,39 @@ 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
now_timestamp=$(date +%s)
elapsed_seconds=$(($now_timestamp - $start_timestamp))
remaining_second=$(( ($commits - $git_filter_branch__commit_count) * $elapsed_seconds / $git_filter_branch__commit_count ))
if test $elapsed_seconds -gt 0
then
next_sample_at=$(( ($elapsed_seconds + 1) * $git_filter_branch__commit_count / $elapsed_seconds ))
else
next_sample_at=$(($next_sample_at + 1))
fi
progress=" ($elapsed_seconds seconds passed, remaining $remaining_second predicted)"
fi
printf "\rRewrite $commit ($git_filter_branch__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
"")
Expand Down

0 comments on commit 6a9d16a

Please sign in to comment.