# [PATCH 1/2] filter-branch: Simplify parent computation.

4 messages from 2007-06-08 to 2007-06-10. Participants: Johannes Sixt, Johannes Schindelin, Junio C Hamano.
Thread: https://gitlist.dev/t/8510

## Johannes Sixt, 2007-06-08 21:28

Subject: [PATCH 1/2] filter-branch: Simplify parent computation.
Message-ID: <200706082328.39758.johannes.sixt@telecom.at>
URL: https://gitlist.dev/e/200706082328.39758.johannes.sixt%40telecom.at

```
We can use git rev-list --parents when we list the commits to rewrite.
It is not necessary to run git rev-list --parents for each commit in the
loop.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
---
 git-filter-branch.sh |   24 +++++++-----------------
 1 files changed, 7 insertions(+), 17 deletions(-)

diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 4990729..4ef4570 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -229,17 +229,6 @@ set_ident () {
 	echo "[ -n \"\$GIT_${uid}_NAME\" ] || export 
GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\""
 }
 
-# list all parent's object names for a given commit
-get_parents () {
-	case "$filter_subdir" in
-	"")
-		git-rev-list -1 --parents "$1"
-		;;
-	*)
-		git-rev-list -1 --parents "$1" -- "$filter_subdir"
-	esac | sed "s/^[0-9a-f]*//"
-}
-
 tempdir=.git-rewrite
 filter_env=
 filter_tree=
@@ -332,18 +321,19 @@ mkdir ../map # map old->new commit ids for rewriting 
parents
 
 case "$filter_subdir" in
 "")
-	git-rev-list --reverse --topo-order --default HEAD "$@"
+	git-rev-list --reverse --topo-order --default HEAD \
+		--parents "$@"
 	;;
 *)
-	git-rev-list --reverse --topo-order --default HEAD "$@" \
-		-- "$filter_subdir"
+	git-rev-list --reverse --topo-order --default HEAD \
+		--parents "$@" -- "$filter_subdir"
 esac > ../revs
 commits=$(cat ../revs | wc -l | tr -d " ")
 
 test $commits -eq 0 && die "Found nothing to rewrite"
 
 i=0
-while read commit; do
+while read commit parents; do
 	i=$(($i+1))
 	printf "\rRewriting commits... ($i/$commits)"
 
@@ -377,7 +367,7 @@ while read commit; do
 	eval "$filter_index" < /dev/null
 
 	parentstr=
-	for parent in $(get_parents $commit); do
+	for parent in $parents; do
 		for reparent in $(map "$parent"); do
 			parentstr="$parentstr -p $reparent"
 		done
@@ -398,7 +388,7 @@ while read commit; do
 		done > ../map/$commit
 done <../revs
 
-src_head=$(tail -n 1 ../revs)
+src_head=$(tail -n 1 ../revs | sed -e 's/ .*//')
 target_head=$(head -n 1 ../map/$src_head)
 case "$target_head" in
 '')
-- 
1.5.2

```

## Johannes Schindelin, 2007-06-08 21:29

Subject: Re: [PATCH 1/2] filter-branch: Simplify parent computation.
Message-ID: <Pine.LNX.4.64.0706082228450.4059@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0706082228450.4059%40racer.site
In-Reply-To: <200706082328.39758.johannes.sixt@telecom.at>

```
Hi,

Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>

for both patches. They look obviously correct to me.

Ciao,
Dscho

```

## Junio C Hamano, 2007-06-09 20:44

Subject: Re: [PATCH 1/2] filter-branch: Simplify parent computation.
Message-ID: <7vmyz8eu3y.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vmyz8eu3y.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <200706082328.39758.johannes.sixt@telecom.at>

```
Johannes Sixt <johannes.sixt@telecom.at> writes:

> @@ -332,18 +321,19 @@ mkdir ../map # map old->new commit ids for rewriting 
> parents
>  

Crap.  Why is this patch line-wrapped X-<.

> ... 
>  i=0
> -while read commit; do
> +while read commit parents; do
>  	i=$(($i+1))
>  	printf "\rRewriting commits... ($i/$commits)"
>  

Crap.  Where did that "\rRewriting commits..." come from?
The other Johannes had the same in his patch.

> @@ -398,7 +388,7 @@ while read commit; do
>  		done > ../map/$commit
>  done <../revs
>  
> -src_head=$(tail -n 1 ../revs)
> +src_head=$(tail -n 1 ../revs | sed -e 's/ .*//')
>  target_head=$(head -n 1 ../map/$src_head)
>  case "$target_head" in
>  '')

Crap.  I seem to have "tee" there that stores them to ../map/$commit.

Anyway, I've manually fixed up the offending three patches (two
from you and one from the other Johannes) and pushed the results
out on 'next'.

```

## Johannes Schindelin, 2007-06-10 07:14

Subject: Re: [PATCH 1/2] filter-branch: Simplify parent computation.
Message-ID: <Pine.LNX.4.64.0706100813400.4059@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0706100813400.4059%40racer.site
In-Reply-To: <7vmyz8eu3y.fsf@assigned-by-dhcp.cox.net>

```
Hi,

On Sat, 9 Jun 2007, Junio C Hamano wrote:

> Anyway, I've manually fixed up the offending three patches (two from you 
> and one from the other Johannes) and pushed the results out on 'next'.

Sorry. I guess we were just beaming patches back and forth, applying them 
in our local repos, and working from there.

I promise to try better.

Ciao,
Dscho

```
