I have an active project with some sensitive files and directories. I want to hire an external contractor to do some simple UI work. However, I don’t want the contractor to have access to some directories and files. My project is in mercurial on Bitbucket.
What is the best way to clean up the project and give him access to commit his changes? I thought about forking into a new repository, but I am worried about removing directories I don’t want him to have access to.
How to I remove them so they don’t appear the original changesets? How to I merge his repo back without it removing those directories in my main repository? Is a fork the way to go?
Naturally a repository needs access to its whole history in order to self-check its integrity. I don’t know of a way to selectively hide parts of the repository (there’s the ACL extension, but it is for write access only).
In your case, I would
-fto force pulling of an unrelated repository), andFor steps 3 to 5 you don’t necessarily have to wait until the external developer is done. Rebasing intermediate states of his repository is also possible.
Yet, it’s an theoretical idea .. one has to see how it performs in practice.
Alternative: In case you frequently have external contractors who shouldn’t see some parts of your code, I would second @Anton’s comment to setup permission related multiple repositories.