diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2009-10-08 15:33:47 -0400 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2009-10-08 15:33:47 -0400 |
commit | 3948b422381a0f05225aaf8b973d0cd54f089348 (patch) | |
tree | 727d74921af1fd2c06ffe6ebd699af83e7a1d4a9 | |
parent | 586c35de30781821050c6f3237da2340ca6a51b5 (diff) |
found a way to get false positive influences
-rw-r--r-- | doc/todo/dependency_types.mdwn | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/doc/todo/dependency_types.mdwn b/doc/todo/dependency_types.mdwn index cce5997e8..56153239f 100644 --- a/doc/todo/dependency_types.mdwn +++ b/doc/todo/dependency_types.mdwn @@ -501,6 +501,34 @@ to not link to done, the influence will do its job. Looks good! +---- + +Here is a case where this approach has some false positives. + +"bugs/* and link(patch)" + +This finds as influences all pages that link to patch, even +if they are not under bugs/, and so can never match. + +To fix this, the influence calculation would need to consider boolean +operators. Currently, this turns into roughly: + +`FailReason() & SuccessReason(patch)` + +Let's say that the glob instead returns a HardFailReason, which when +ANDed with another object, drops their influences. (But when ORed, combines +them.) Fixes the above, but does it always work? + +"(bugs/* or link(patch)) and backlink(index)" => +`( HardFailReason() | SuccessReason(patch) ) & SuccessReason(index)`` => +`SuccessReason(patch) & SuccessReason(index)` => +SuccessReason(patch, index) => right + +"(bugs/* and link(patch)) or backlink(index)" => +`( HardFailReason() & SuccessReason(patch) ) | SuccessReason(index)`` => +`HardFailReason() | SuccessReason(index)` => +`SuccessReason(index)` => right + #### High-level Calculation and Storage Naively calculating the full influence list for a pagespec requires trying |