Jeff King <peff@xxxxxxxx> 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html