What's the best way to let third-party users work on your website? We have our site in SVN. Do we just give them SVN access, let them check in code, and then I push to dev - and then to production?
I'd suggest giving read-only access and then you or some other trusted person with write access commit changes from the 3rd party.
There's a related entry about "vendor branch" from the SVN FAQ.
Since it is quite easy to see what changed in SVN, and also roll back specific changes, allowing them to write back to SVN should be fine. Then, you can simply review, via the log and blame, what they changed. You can also roll back what you don't like, and have very fine, file-by-file, control over what gets pushed up to production, etc.
I think it depends on how closely they are integrated with your team. WE had third party contractors who sat in our offices and were treated just like anyone else, most poeple couldn;thave told you who was an employee and who wasa contractor. In this case it pays to treat them like employees with the same level of trust that an employee has. You will avoid all that us vice them type of manuevering.
People who work off-site, may require a more stringent level of trust especially if you are not confortable with the work they are producing for you (i.e., a new contracting firm for instance). Again, if they are doing the whole project, have them use SVN themsleves in their own place and then provide you the finished code to put on your dev and qa and prod. If they are working on code that both you and them may be working on, it is to your advantage to have all in the same source code repository as both groups might need to touch the same piece of code.
Another option is to use git-svn to create a git repository from your svn. You can then give the contractors full access to the git repository, but they don't need any access (including even read access) to your svn repository. They can work happily away on the git repository checking in as often as they want. If the contractors work offsite, they can even take the git repository offsite with them and check code into it while disconnected from your network. Whenever you want to pull their code back into your svn repo, just use git-svn to push the code from their git repository back into your svn.
This is an area where distributed repositories like git, bazaar, and mercurial shine.