Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
filter-branch: Simplify parent computation.
author
Johannes Sixt
<johannes.sixt@telecom.at>
Fri, 8 Jun 2007 21:28:39 +0000
(23:28 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Sat, 9 Jun 2007 19:20:20 +0000
(12:20 -0700)
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-filter-branch.sh
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
685ef54
)
diff --git
a/git-filter-branch.sh
b/git-filter-branch.sh
index efb8f2dbca9c347395557bdc178b8a256e266eb5..cb43b59740e763da922ac93cd1fbace64c07acab 100755
(executable)
--- a/
git-filter-branch.sh
+++ b/
git-filter-branch.sh
@@
-226,17
+226,6
@@
set_ident () {
echo "[ -n \"\$GIT_${uid}_NAME\" ] || export GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\""
}
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=
tempdir=.git-rewrite
filter_env=
filter_tree=
@@
-329,18
+318,19
@@
mkdir ../map # map old->new commit ids for rewriting parents
case "$filter_subdir" in
"")
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
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 "$commit ($i/$commits) "
i=$(($i+1))
printf "$commit ($i/$commits) "
@@
-374,7
+364,7
@@
while read commit; do
eval "$filter_index" < /dev/null
parentstr=
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
for reparent in $(map "$parent"); do
parentstr="$parentstr -p $reparent"
done
@@
-389,7
+379,7
@@
while read commit; do
tee ../map/$commit
done <../revs
tee ../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
'')
target_head=$(head -n 1 ../map/$src_head)
case "$target_head" in
'')