Added check to order of processed commits.
With debug messages enabled, "incorrect order" will be output whenever a commit is processed before its parents have been processed. This can be determined by checking to see if a parent isn't mapped to a new commit, but it has been processed.
This commit is contained in:

committed by
Avery Pennarun

parent
6f4f84fa2a
commit
915b9894ab
@ -138,6 +138,7 @@ cache_setup()
|
|||||||
cachedir="$GIT_DIR/subtree-cache/$$"
|
cachedir="$GIT_DIR/subtree-cache/$$"
|
||||||
rm -rf "$cachedir" || die "Can't delete old cachedir: $cachedir"
|
rm -rf "$cachedir" || die "Can't delete old cachedir: $cachedir"
|
||||||
mkdir -p "$cachedir" || die "Can't create new cachedir: $cachedir"
|
mkdir -p "$cachedir" || die "Can't create new cachedir: $cachedir"
|
||||||
|
mkdir -p "$cachedir/notree" || die "Can't create new cachedir: $cachedir/notree"
|
||||||
debug "Using cachedir: $cachedir" >&2
|
debug "Using cachedir: $cachedir" >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,6 +152,30 @@ cache_get()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cache_miss()
|
||||||
|
{
|
||||||
|
for oldrev in $*; do
|
||||||
|
if [ ! -r "$cachedir/$oldrev" ]; then
|
||||||
|
echo $oldrev
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check_parents()
|
||||||
|
{
|
||||||
|
missed=$(cache_miss $*)
|
||||||
|
for miss in $missed; do
|
||||||
|
if [ ! -r "$cachedir/notree/$miss" ]; then
|
||||||
|
debug " incorrect order: $miss"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
set_notree()
|
||||||
|
{
|
||||||
|
echo "1" > "$cachedir/notree/$1"
|
||||||
|
}
|
||||||
|
|
||||||
cache_set()
|
cache_set()
|
||||||
{
|
{
|
||||||
oldrev="$1"
|
oldrev="$1"
|
||||||
@ -569,9 +594,12 @@ cmd_split()
|
|||||||
|
|
||||||
tree=$(subtree_for_commit $rev "$dir")
|
tree=$(subtree_for_commit $rev "$dir")
|
||||||
debug " tree is: $tree"
|
debug " tree is: $tree"
|
||||||
|
|
||||||
|
check_parents $parents
|
||||||
|
|
||||||
# ugly. is there no better way to tell if this is a subtree
|
# ugly. is there no better way to tell if this is a subtree
|
||||||
# vs. a mainline commit? Does it matter?
|
# vs. a mainline commit? Does it matter?
|
||||||
|
if [ -z $tree ]; then
|
||||||
set_notree $rev
|
set_notree $rev
|
||||||
if [ -n "$newparents" ]; then
|
if [ -n "$newparents" ]; then
|
||||||
cache_set $rev $rev
|
cache_set $rev $rev
|
||||||
|
Reference in New Issue
Block a user