gitlab-ci: Use rules: instead of except:/only: for test-docs job

Only run the job automatically for Marge Bot, otherwise let it be
triggered manually.

v2:
* Never run this job for the main project, since it's only needed in
  pre-merge pipelines.
* Add comment explaining that cases not covered by explicit rules
  default to "when: never".

Reviewed-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5469>
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 42a9695..227a27d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -47,13 +47,17 @@
 test-docs:
   extends: .docs-base
   stage: container+docs
-  except:
-    refs:
-    - master@mesa/mesa
-  only:
-    changes:
-    - docs/**/*
-    - .gitlab-ci.yml
+  rules:
+    - if: '$CI_PROJECT_NAMESPACE == "mesa"'
+      when: never
+    - if: '$GITLAB_USER_LOGIN == "marge-bot"'
+      changes: &docs-or-ci
+      - docs/**/*
+      - .gitlab-ci.yml
+      when: on_success
+    - changes: *docs-or-ci
+      when: manual
+    # Other cases default to never
 
 # When to automatically run the CI
 .ci-run-policy: