Skip to content

Commit 915b989

Browse files
jessegreenwaldapenwarr
authored andcommitted
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.
1 parent 6f4f84f commit 915b989

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

git-subtree.sh

+28
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ cache_setup()
138138
cachedir="$GIT_DIR/subtree-cache/$$"
139139
rm -rf "$cachedir" || die "Can't delete old cachedir: $cachedir"
140140
mkdir -p "$cachedir" || die "Can't create new cachedir: $cachedir"
141+
mkdir -p "$cachedir/notree" || die "Can't create new cachedir: $cachedir/notree"
141142
debug "Using cachedir: $cachedir" >&2
142143
}
143144

@@ -151,6 +152,30 @@ cache_get()
151152
done
152153
}
153154

155+
cache_miss()
156+
{
157+
for oldrev in $*; do
158+
if [ ! -r "$cachedir/$oldrev" ]; then
159+
echo $oldrev
160+
fi
161+
done
162+
}
163+
164+
check_parents()
165+
{
166+
missed=$(cache_miss $*)
167+
for miss in $missed; do
168+
if [ ! -r "$cachedir/notree/$miss" ]; then
169+
debug " incorrect order: $miss"
170+
fi
171+
done
172+
}
173+
174+
set_notree()
175+
{
176+
echo "1" > "$cachedir/notree/$1"
177+
}
178+
154179
cache_set()
155180
{
156181
oldrev="$1"
@@ -568,10 +593,13 @@ cmd_split()
568593

569594
tree=$(subtree_for_commit $rev "$dir")
570595
debug " tree is: $tree"
596+
597+
check_parents $parents
571598

572599
# ugly. is there no better way to tell if this is a subtree
573600
# vs. a mainline commit? Does it matter?
574601
if [ -z $tree ]; then
602+
set_notree $rev
575603
if [ -n "$newparents" ]; then
576604
cache_set $rev $rev
577605
fi

0 commit comments

Comments
 (0)