Root problem:
- Some existing differential items on my install have no repository information attached
- These are certainly based on a diffusion respository and have properly linked commit items
- Seems to be due to user-side configuration issues with arcanist and svn repos
- We are enabling spaces roughly in line with the 4th use case described in /book/phabricator/article/spaces/
- Namely, we want a small cordoned off area for consultants
- Because the diffs described above are not attached to any repo, they are visible to this lower-privilege space
- This is undesirable; all the properly-created diffs are hidden as their underlying repo is not visible to the space
That's my basic problem. Please let me know if it's unclear or there's anything else I could provide.
Below are some of the ways I considered solving it:
- There's no way to search for revisions which are not attached to any repositories (at say /differential/query/advanced/)
- In that there's no way to specify "None" in the repository filter
- I've worked around this by revoking all repository visibility permissions from a user and seeing which revisions remain visible
- These are exactly the diffs I'm trying to prevent my unprivileged users from seeing
- Differential support for spaces (as mentioned in T8493) would solve this for me
- Similarly, inferring the Space for the differential item based on the Space of the eventual commit/diffusion item
- Some sort of batch edit for differential so that I can get these differential items attached to the correct repository
- Command-line would be fine, but suffers from having to populate the list
- Barring any input from the upstream, my current plan is to attempt to do this directly in the database
Any input on any of those solutions or any other possibilities I didn't consider would be greatly appreciated.