Phabricator currently support a great workflow for stopping interns from landing diffs.
- Create a project only I can see.
- Observe intern creating a diff that I have been added to.
- Having seen the code and not agreeing with it although I can find no technical fault I apply my secret project. Which looks like this for the other user.
- Ask intern to fix a lint error and re diff.
When they run arc diff they will get this error.
ARGV '/usr/share/arcanist/bin/../scripts/arcanist.php' 'diff' '--trace' LOAD Loaded "phutil" from "/usr/share/libphutil/src". LOAD Loaded "arcanist" from "/usr/share/arcanist/src". Config: Reading user configuration file "/home/schuettm/.arcrc"... Config: Reading system configuration file "/etc/arcconfig"... Working Copy: Reading .arcconfig from "/home/schuettm/webroot/hudson/.arcconfig". Working Copy: Path "/home/schuettm/webroot/hudson" is part of `git` working copy "/home/schuettm/webroot/hudson". Working Copy: Project root is at "/home/schuettm/webroot/hudson". Config: Did not find local configuration at "/home/schuettm/webroot/hudson/.git/arc/config". Loading phutil library from '/home/schuettm/webroot/integrator/client/source'... Loading phutil library from '/home/schuettm/webroot/hudson/source/phab'... >>> [0] <conduit> user.whoami() <bytes = 117> >>> [1] <http> http://phabricator.dev/api/user.whoami <<< [1] <http> 235,474 us <<< [0] <conduit> 236,233 us >>> [2] <exec> $ git diff --no-ext-diff --no-textconv --raw 'HEAD' -- >>> [3] <exec> $ git ls-files --others --exclude-standard <<< [2] <exec> 4,827 us <<< [3] <exec> 4,743 us >>> [4] <exec> $ git diff-files --name-only <<< [4] <exec> 2,259 us >>> [5] <event> diff.didCollectChanges <listeners = 0> <<< [5] <event> 87 us >>> [6] <exec> $ git rev-parse --verify HEAD^ <<< [6] <exec> 15,505 us >>> [7] <exec> $ git rev-parse --abbrev-ref --symbolic-full-name '@{upstream}' <<< [7] <exec> 2,059 us >>> [8] <exec> $ git cat-file -t 'origin/master' <<< [8] <exec> 13,357 us >>> [9] <exec> $ git merge-base 'origin/master' HEAD <<< [9] <exec> 2,197 us >>> [10] <exec> $ git rev-parse 'HEAD' <<< [10] <exec> 1,963 us >>> [11] <exec> $ git log --first-parent --format=medium 'c90b10d91e8dd3301be5e7af6a669fc5c53fc549'..'af6640a87e49fe488c1cc18d6332733841b1e3e0' <<< [11] <exec> 2,293 us >>> [12] <conduit> differential.query() <bytes = 236> >>> [13] <http> http://phabricator.dev/api/differential.query <<< [13] <http> 273,756 us <<< [12] <conduit> 273,983 us >>> [14] <conduit> differential.query() <bytes = 146> >>> [15] <http> http://phabricator.dev/api/differential.query <<< [15] <http> 288,834 us <<< [14] <conduit> 289,060 us >>> [16] <conduit> differential.getcommitmessage() <bytes = 169> >>> [17] <http> http://phabricator.dev/api/differential.getcommitmessage <<< [17] <http> 294,728 us <<< [16] <conduit> 294,963 us >>> [18] <conduit> differential.parsecommitmessage() <bytes = 341> >>> [19] <http> http://phabricator.dev/api/differential.parsecommitmessage <<< [19] <http> 247,195 us <<< [18] <conduit> 247,403 us [2016-07-18 22:26:56] EXCEPTION: (ArcanistDifferentialCommitMessageParserException) Error parsing field "Tags": The objects you have listed include objects which do not exist (PHID-PROJ-2h3zn6kuntthz6v6weoj). at [<arcanist>/src/differential/ArcanistDifferentialCommitMessage.php:54] arcanist(), integrator-client(), phab(), phutil() #0 ArcanistDifferentialCommitMessage::pullDataFromConduit(ConduitClient) called at [<arcanist>/src/workflow/ArcanistDiffWorkflow.php:1795] #1 ArcanistDiffWorkflow::getCommitMessageFromRevision(string) called at [<arcanist>/src/workflow/ArcanistDiffWorkflow.php:1527] #2 ArcanistDiffWorkflow::buildCommitMessage() called at [<arcanist>/src/workflow/ArcanistDiffWorkflow.php:469] #3 ArcanistDiffWorkflow::run() called at [<arcanist>/scripts/arcanist.php:392]
I ran across this about a month ago with a user who had a project they didn't have access to added to a diff however it did not occur to me that this will stop secret projects from monitoring users.