Jeff King <p...@peff.net> writes:

> +start=$(date +%s)

Is that a GNU extension?

>  git_filter_branch__commit_count=0
>  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)"
> +     now=$(date +%s)
> +     elapsed=$(($now - $start))
> +     # work in integer percentages as a sort of fixed-point
> +     pct=$(($git_filter_branch__commit_count * 100 / $commits))
> +     if test $pct -eq 0; then
> +             remain=
> +     else
> +             eta=$(($elapsed * 100 / $pct))
> +             remain="($(($eta - $elapsed)) seconds remaining)   "
> +     fi
> +     printf "\rRewrite $commit ($git_filter_branch__commit_count/$commits) 
> $remain"
>  
>       case "$filter_subdir" in
>       "")
>
> but the time jumps around early on because of the lack of precision. And
> of course there's no smoothing, and no emphasis on recent history versus
> the whole operation. I'll leave those as an exercise to the reader. :)

;-)

An alternative implementation may be to ask `date` every 1000
commits (or whatever sufficiently large value that we can amortise
the cost) to measure the rate and compute $remain based on that
measurement.  That way, we can afford to use more portable ways to
ask `date` about the current time and compute the "how many seconds"
ourselves.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to