From 6a9d16a0a80ef53c1fcc0f6bc3d1d24d21961272 Mon Sep 17 00:00:00 2001 From: Gabor Bernat Date: Mon, 7 Sep 2015 15:52:08 +0200 Subject: [PATCH 1/2] filter-branch: add passed/remaining seconds on progress adds seconds progress and estimated seconds time if getting the current timestamp is supported by the date +%s command Signed-off-by: Gabor Bernat Signed-off-by: Junio C Hamano --- git-filter-branch.sh | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 5b3f63d8bb..b7bad16006 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -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 "") From 71400d97b12abeba25f2e8245a9751daf8583142 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 21 Sep 2015 15:16:20 -0700 Subject: [PATCH 2/2] filter-branch: make report-progress more readable The name of some variables that are used very locally in this function were overly long; they were making the lines harder to read and the longer names didn't add much more information. Signed-off-by: Junio C Hamano --- git-filter-branch.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index b7bad16006..5777947a5d 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -280,18 +280,20 @@ 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 + 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_seconds + 1) * $git_filter_branch__commit_count / $elapsed_seconds )) + next_sample_at=$(( ($elapsed + 1) * $count / $elapsed )) else next_sample_at=$(($next_sample_at + 1)) fi - progress=" ($elapsed_seconds seconds passed, remaining $remaining_second predicted)" + progress=" ($elapsed seconds passed, remaining $remaining predicted)" fi - printf "\rRewrite $commit ($git_filter_branch__commit_count/$commits)$progress " + printf "\rRewrite $commit ($count/$commits)$progress " } git_filter_branch__commit_count=0