Reputation: 3900
Suppose we have two separate github users: Foo and Bar. They own Quux and Waldo repositories respectively. So Foo can push to Foo/Quux and cannot push to Bar/Waldo. Opposite is right for Bar. Then Foo cloned his Quux repository:
$ git clone ...
...
$ git remote -v
origin [email protected]:Foo/Quux.git (fetch)
origin [email protected]:Foo/Quux.git (push)
Seems while Foo has write access to Foo/Quux repository via git
user he has not write access to Bar/Waldo repository via same user. Is there any way I can reach the same behaviour on my git server? Am I supposed to write custom sshd
daemon for this purpose?
Upvotes: 3
Views: 835
Reputation: 13091
You could use Gitolite to get fine-grained access control to your git repositories over SSH where every user is identified by her SSH key.
In contrast to the already mentioned gitosis, Gitolite is still maintained and supports a more fine-grained control over the repository access.
If you want more of GitHub's functionality internally you should take a look at GitLab and of course GitHub Enterprise.
Upvotes: 7
Reputation: 28663
You can use gitosis for fine grained access control to multiple repositories being shared across a team.
Upvotes: 1
Reputation: 15100
If the repositories are on the same server, there is no way to distinguish two users with the same username. Even a custom sshd wouldn't work because it would see the incoming connection for user "git" only, not the original username.
We manage our permissions with either usernames or groups. So some users belong to the "developers" group that can push to certain repositories and others belong to "users" which can push to other repositories. Each user logs in with his/her own username.
Upvotes: 0