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>
---

I've submitted this first to this list as a feature request, however
in the meantime with the help of Jeff King <peff@peff.net>, Junio C
Hamano <gitster@pobox.com>, Eric Sunshine <sunshine@sunshineco.com>
and Mikael Magnusson <mikachu@gmail.com> 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.

Ammended build up as agreed at [1].

[1] http://thread.gmane.org/gmane.comp.version-control.git/277314
  • Loading branch information
Gabor Bernat committed Sep 7, 2015
1 parent ec371ff commit 3bf22b1
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion git-filter-branch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -275,11 +275,41 @@ commits=$(wc -l <../revs | tr -d " ")
test $commits -eq 0 && die "Found nothing to rewrite"

# Rewrite the commits
report_progress ()
{
if test -n "$progress"
then
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
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 3bf22b1

Please sign in to comment.