Re: How to hide a git repository?
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Nov 25, 2008, 20:10 UTC
- Message-ID
- <m3skpfk1mp.fsf@localhost.localdomain>
- In-Reply-To
- <200811252001.37259.thomas@koch.ro>
Thomas Koch <thomas@koch.ro> writes:
> Am Tuesday 25 November 2008 19:38:02 schrieb Daniel Barkalow: > > On Mon, 24 Nov 2008, Gary Yang wrote:
Show 12 quoted lines
> > > Do I have to create two git servers? One is for public to download the > > > released code. For example: gitpub.mycompany.com:/pub/linux/kernel. > > > > The public can't generally use this URL, because it's an ssh URL, and they > > won't be able to connect with ssh. They can only really use > > git://gitpub.mycompany.com/pub/linux/kernel or something similar. > > > > The normal pattern is to have R/W access with ssh and anonymous read > > access via git://...; you can then have multiple repositories on the same > > host, with the git server only serving the public one. All of them will be > > accessible to the ssh methods (restricted by the user's UNIX permissions > > on the files in those directories).
To control access via SSH protocol (which can be used both for fetching and for pushing), you can either configure accounts and user/groups permissions on repository directories, or you can use external tool like ssh_acl or Gitosis.
To control access via HTTP you can employ authorization and authentication from your web server; for push this would be matter of setting up WebDAV.
To control access via anonymous git:// protocol, you can use whitelist and blacklist mechanism built in git-daemon; by default only repositories with git-daemon-export-ok in them (in .git) are exported, if I understand correctly.
Additionally, if protocol is authenticated you can use hooks mechanism like example contrib/hooks/update-paranoid to restrict access (and with finer granularity too).
> Do you now of a way to show public repos with gitweb to the public and > private repos to the staff with the same gitweb installation?
You can quite simply restrict access to some directories/repositories, or the fact that they are listed in list of all projects for _all_ clients quite easily (see description of GITWEB_EXPORT_OK in gitweb/README and gitweb/INSTALL).
If you have something more fancy, check out newest gitweb and take a look at gitweb/INSTALL: you can now, thanks to commit dd7f5f1 by Alexander Gavrilov, see http://permalink.gmane.org/gmane.comp.version-control.git/99962
HTH
-- Jakub Narebski Poland ShadeHawk on #git