git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Gábor Bernát" <bernat@primeranks.net>
To: git@vger.kernel.org
Cc: peff@peff.net, gitster@pobox.com, sunshine@sunshineco.com,
	mikachu@gmail.com, cbailey32@bloomberg.net,
	Lee.Carver@servicenow.com, mfwitten@gmail.com,
	Gabor Bernat <gabor.bernat@gravityrd.com>
Subject: [PATCH] filter-branch: add passed/remaining seconds on progress
Date: Mon,  7 Sep 2015 14:31:35 +0200	[thread overview]
Message-ID: <1441629095-32004-1-git-send-email-bernat@primeranks.net> (raw)
In-Reply-To: <1441379798-15453-1-git-send-email-bernat@primeranks.net>

From: Gabor Bernat <gabor.bernat@gravityrd.com>

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
---
 git-filter-branch.sh | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 5b3f63d..565144a 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -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
 	"")
-- 
2.6.0.rc0.3.gb3280a4

  parent reply	other threads:[~2015-09-07 12:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <xmqq4mjgyrl9.fsf () gitster ! mtv ! corp ! google ! com>
2015-09-04 15:16 ` [PATCH] filter-branch: add passed/remaining seconds on progress Gábor Bernát
2015-09-04 18:34   ` Junio C Hamano
2015-09-04 20:15     ` Eric Sunshine
2015-09-06  9:49       ` Gabor Bernat
2015-09-06 10:05         ` Eric Sunshine
2015-09-06 13:11   ` Gábor Bernát
2015-09-06 18:13     ` Junio C Hamano
2015-09-07 12:31   ` Gábor Bernát [this message]
2015-09-07 13:44     ` Ramsay Jones
2015-09-07 13:52   ` Gábor Bernát
2015-09-07 20:54     ` Eric Sunshine
2015-09-08 17:32       ` Junio C Hamano
2015-09-08 17:59         ` Eric Sunshine
2015-09-21 19:52           ` Junio C Hamano
2015-09-21 21:22             ` Eric Sunshine
     [not found]               ` <CALYJoz3xoiB2pVT+r0Nz+EYdE91WX6ypdmieMs1uubg=Vs4bog@mail.gmail.com>
2015-09-22 15:53                 ` Gabor Bernat
2015-09-22 16:08                   ` Junio C Hamano
2015-09-23 20:48                     ` Gabor Bernat
2015-09-08 21:44         ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1441629095-32004-1-git-send-email-bernat@primeranks.net \
    --to=bernat@primeranks.net \
    --cc=Lee.Carver@servicenow.com \
    --cc=cbailey32@bloomberg.net \
    --cc=gabor.bernat@gravityrd.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mfwitten@gmail.com \
    --cc=mikachu@gmail.com \
    --cc=peff@peff.net \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).