From: Gabor Bernat <redacted>
adds seconds progress and estimated seconds time if getting the current
timestamp is supported by the date %+s command
Signed-off-by: Gabor Bernat <redacted>
---
I've submitted this first to this list as a feature request, however
in the meantime with the help of Jeff King [off-list ref], Junio C
Hamano [off-list ref], Eric Sunshine [off-list ref]
and Mikael Magnusson [off-list ref] came up with solution, so now
I submit it as a revised patch.
The current solution updates the progress for all commits until 1
second time is elapsed. Afterwards updates it at most once a second.
---
git-filter-branch.sh | 42 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 41 insertions(+), 1 deletion(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 5b3f63d..924cf3d 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -277,9 +277,49 @@ test $commits -eq 0 && die "Found nothing to rewrite"
# Rewrite the commits
git_filter_branch__commit_count=0
+
+if date '+%s' 2>/dev/null | grep -q '^[0-9][0-9]*$'
+then
+ show_seconds=t
+else
+ show_seconds=
+fi
+
+case "$show_seconds" in
+t)
+ start_timestamp=$(date +%s)
+ next_sample_at=0
+ ;;
+'')
+ progress=""
+ ;;
+esac
+
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)"
+
+ case "$show_seconds" in
+ t)
+ if 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
+ ;;
+ '')
+ progress=""
+ ;;
+ esac
+
+ printf "\rRewrite $commit ($git_filter_branch__commit_count/$commits)$progress"
case "$filter_subdir" in
"")
--
2.6.0.rc0.3.gb3280a4