Merge branch 'jk/filter-branch-use-of-sed-on-incomplete-line'
authorJunio C Hamano <gitster@pobox.com>
Fri, 16 Oct 2015 21:42:47 +0000 (14:42 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 Oct 2015 21:42:47 +0000 (14:42 -0700)
A recent "filter-branch --msg-filter" broke skipping of the commit
object header, which is fixed.

* jk/filter-branch-use-of-sed-on-incomplete-line:
filter-branch: remove multi-line headers in msg filter

1  2 
git-filter-branch.sh
diff --combined git-filter-branch.sh
index 5777947a5d6c0fadc2e91a809b4ce850cb152b24,fff8093d4f301b96a455a74dc062f7f645b15eed..27c9c54fbd24ef3a2995fd90b04911e5a1d8aed9
@@@ -275,41 -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" &&
 +              test $git_filter_branch__commit_count -gt $next_sample_at
 +      then
 +              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 + 1) * $count / $elapsed ))
 +              else
 +                      next_sample_at=$(($next_sample_at + 1))
 +              fi
 +              progress=" ($elapsed seconds passed, remaining $remaining predicted)"
 +      fi
 +      printf "\rRewrite $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
        "")
        fi
  
        {
-               while read -r header_line && test -n "$header_line"
+               while IFS='' read -r header_line && test -n "$header_line"
                do
                        # skip header lines...
                        :;