[PATCH] filter-branch: add passed/remaining seconds on progress

2015-09-04 Thread Gábor Bernát
From: Gabor Bernat 

adds seconds progress and estimated seconds time if getting the current
timestamp is supported by the date %+s command

Signed-off-by: Gabor Bernat 
---

I've submitted this first to this list as a feature request, however
in the meantime with the help of Jeff King , Junio C
Hamano , Eric Sunshine 
and Mikael Magnusson  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 | 36 +++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 5b3f63d..5e9ae0f 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -277,9 +277,43 @@ test $commits -eq 0 && die "Found nothing to rewrite"
 # Rewrite the commits
 
 git_filter_branch__commit_count=0
+
+echo $(date +%s) | grep -q '^[0-9]+$';  2>/dev/null && show_seconds=t
+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.5.1.408.g431338e

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] filter-branch: add passed/remaining seconds on progress

2015-09-06 Thread Gábor Bernát
From: Gabor Bernat 

adds seconds progress and estimated seconds time if getting the current
timestamp is supported by the date %+s command

Signed-off-by: Gabor Bernat 
---

I've submitted this first to this list as a feature request, however
in the meantime with the help of Jeff King , Junio C
Hamano , Eric Sunshine 
and Mikael Magnusson  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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] filter-branch: add passed/remaining seconds on progress

2015-09-07 Thread Gábor Bernát
From: Gabor Bernat 

adds seconds progress and estimated seconds time if getting the current
timestamp is supported by the date %+s command

Signed-off-by: Gabor Bernat 
---

I've submitted this first to this list as a feature request, however
in the meantime with the help of Jeff King , Junio C
Hamano , Eric Sunshine 
and Mikael Magnusson  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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] filter-branch: add passed/remaining seconds on progress

2015-09-07 Thread Gábor Bernát
From: Gabor Bernat 

adds seconds progress and estimated seconds time if getting the current
timestamp is supported by the date +%s command

Signed-off-by: Gabor Bernat 
---

I've submitted this first to this list as a feature request, however
in the meantime with the help of Jeff King , Junio C
Hamano , Eric Sunshine 
and Mikael Magnusson  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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html