When the first commit is manufactured, its parents are looked up in the commit map. However, without this patch the map is always empty at that time. If the entire history is rewritten, this is no problem because the first commit does not have any parents anyway. However, if -r is used to constrain rewriting to only part of the history, this first commit is manufactured incorrectly without parents because 'cat' fails. Signed-off-by: Johannes Sixt <johannes.sixt@xxxxxxxxxx> --- I'm posting this again, because I haven't received any feedback nor has the patch been applied. cg-admin-rewritehist | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) 977fc81815877a1e72040355b221fe8d62593eb7 diff --git a/cg-admin-rewritehist b/cg-admin-rewritehist index 9fa4c2a..7dd83cf 100755 --- a/cg-admin-rewritehist +++ b/cg-admin-rewritehist @@ -141,6 +141,7 @@ _git_requires_root=1 tempdir=.git-rewrite startrev= +startrevparents= filter_env= filter_tree= filter_index= @@ -152,6 +153,7 @@ while optparse; do tempdir="$OPTARG" elif optparse -r=; then startrev="^$OPTARG^ $OPTARG $startrev" + startrevparents="$OPTARG^ $startrevparents" elif optparse --env-filter=; then filter_env="$OPTARG" elif optparse --tree-filter=; then @@ -186,6 +188,12 @@ ret=0 mkdir ../map # map old->new commit ids for rewriting parents +# seed with identity mappings for the parents where we start off +for commit in $startrevparents; do + commit="$(git-rev-parse $commit)" + echo $commit > ../map/$commit +done + git-rev-list --topo-order HEAD $startrev | tac >../revs commits=$(cat ../revs | wc -l) -- 1.3.1.gaa6b - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html