Re: How to hide a git repository?
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