pre-upload: Allow projects to ignore SoB altogether

Make signoff_check tri-state - force on, force off, unspecified. If
unspecified, signoff_check will be enabled, which is the current
behavior.

Some projects, such as mesa-amd, track an upstream project where usage
of Signed-Off-By is not enforced, nor is it rejected. Allow such
projects to ignore the SoB tag altogether during pre-upload checks.

BUG=none
TEST=Attempt repo upload dryrun in kernel, platform2, and mesa-amd projects
     with and without SoB tags

Change-Id: I4f0d553988f5e5b4248559bf0b9bb6e72c611e24
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/repohooks/+/2003452
Tested-by: Drew Davenport <ddavenport@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Drew Davenport <ddavenport@chromium.org>
diff --git a/pre-upload.py b/pre-upload.py
index 6807c48..47a96d0 100755
--- a/pre-upload.py
+++ b/pre-upload.py
@@ -1940,7 +1940,8 @@
   disabled_hooks = set(hooks[x] for x in disable_flags)
 
   if _check_change_has_signoff_field not in enabled_hooks:
-    enabled_hooks.add(_check_change_has_no_signoff_field)
+    if _check_change_has_signoff_field not in disabled_hooks:
+      enabled_hooks.add(_check_change_has_no_signoff_field)
   if _check_change_has_branch_field not in enabled_hooks:
     enabled_hooks.add(_check_change_has_no_branch_field)