I'm looking for somekind of version control system where I can create a repository for my project, like SVN for example, but with the abillity to define which portion of the source some user will be able to see and commit changes. If possible, that the user can run a local copy of the project, but without seeing the complete source.

I have a closed-source project and I want to add more developers into it, but I do not want them to see some parts of the source right now, and I don't know which system is better for me.

I already searched for Git, Bitbucket, Assembla (currently using this one), SourceForge, and Google Code, but I think none of them has the feature I am looking for.

  • 1
    Depending on your code base, you could just create sub-repositories in Git.
    – ComFreek
    Commented Jan 13, 2015 at 18:41
  • 4
    Restructure your project to have the parts that you do not wish to give access to others separated from the others and use separate repositories for them but build them into libraries/components/whatever and distribute them to the other users. Interfaces may also need to be separated from both. Then you can use almost any VCS just restrict the access to the private parts. Commented Jan 13, 2015 at 18:58
  • What if they use .net reflector for instance in the portion of the source I dont want them to see, that I build a separate .dll file to contain it, they will see all my code there. Is there a way to protect? Maybe just packing the dlls would solve? I'm not discussing if the pack is crackable or not, thats not the point, just don't want to give them so easy, you know. But I don't think they will try to decompile, just a precaution Commented Jan 13, 2015 at 21:19
  • hmm... I don't have any money to be honest, this is a hobby project, but can you elaborate more about these systems? And is there any free solution? The solution @SteveBarnes said seems fine to me, but I am worried about decompilation of my libraries. Commented Jan 14, 2015 at 17:57
  • Any code can be decompiled if enough effort is put into it a better trick is to embed some items in your code which are not easy to find and remove but allow you to prove that someone is using a copy without permission if it happens. Commented Jan 14, 2015 at 19:24

2 Answers 2


A possible option is to use git submodules. You would need to structure the code as @Steve Barnes said so that what you want to hide can be in a separate submodule.

Git submodule documentation and guide can be found here:



Perforce has all basic access abilities.

  • users, groups
  • permissions which can be applied across repository tree for users/groups

enter image description here

The product

  • is free up to 20 users and 20 workspaces
  • has user interface superior to most of similar products I have seen
  • has plugins into many popular IDE's and integration with Windows Explorer
  • is well-documented and supported even in free edition

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.