The old rules meant that any future changes to these directories would
require the use of `git add -f` to be staged. This is problematic for
the upcoming FOSS-only mirror of GitLab. Any changes to be synced to
this mirror are staged using `git add --all .`, which due to the Git
ignore rules would not add the tmp/ and shared/ directories. This then
leads to various specs failing because they expect certain
sub-directories of these directories to be available.
This commit changes the rules so that we include the .gitkeep files,
ignore other files, and completely ignore anything in tmp/test. This
requires that the rules are specified in tmp/.gitignore and
shared/.gitignore, instead of the top-level .gitignore, without this I
could not get Git to include the .gitkeep files properly.