Configuration
First, what i do is i log-in as the hgusers (user I've setup specially for mercurial, see the first blog post). At the hgusers home directory I've created a new folder called project. And then I move hgusers and hgweb.config from the hg folder to the hgusers main folder.
We need to create a different set of file for our repositories. So copy each of the config files :
$> cp hgweb.config hgweb_project.config
and then modify hgweb_project.config content so it will point to the new project folder. The file content should look like this :
[collections]
/home/hguser/project/ = /home/hguser/project/
/home/hguser/project/ = /home/hguser/project/
now go to our hgweb.cgi directory and copy the file
$> cd /usr/lib/cgi-bin/hg/
$> cp hgweb.cgi hgweb_project.cgi
$> cp hgweb.cgi hgweb_project.cgi
modify the config variable to point to the project repo folder
config = "/home/hguser/hgweb_project.config"
and finally modify the apache settings
vi /etc/apache2/sites-enabled/000-default
copy the previous ScriptAlias and Location div, and modify it to point to the project location. Another that you need to do is to add the AuthGroupFile, and change The Require line. I will go into detail about this in the next section. The file should look like this :
ScriptAlias /project /usr/lib/cgi-bin/hg/hgweb_project.cgi
AuthType Basic
AuthName "Mercurial repositories"
AuthUserFile /home/hguser/hgusers
AuthGroupFile /home/hguser/hggroups
Require group project
ScriptAlias /repo /usr/lib/cgi-bin/hg/hgweb.cgi
AuthType Basic
AuthName "Mercurial repositories"
AuthUserFile /home/hguser/hgusers
AuthGroupFile /home/hguser/hggroups
Require group research
AuthType Basic
AuthName "Mercurial repositories"
AuthUserFile /home/hguser/hgusers
AuthGroupFile /home/hguser/hggroups
Require group project
ScriptAlias /repo /usr/lib/cgi-bin/hg/hgweb.cgi
AuthType Basic
AuthName "Mercurial repositories"
AuthUserFile /home/hguser/hgusers
AuthGroupFile /home/hguser/hggroups
Require group research
Creating Group
I already have user sam and frodo from my previous settings. Now i'm adding two more user using htpasswd command. The users are golum and sauron.
Now we need to create the group for these users. To do this go to the hguser home directory and create a new file called hggroups. You can use VI or your favorite text editor to create it. The file content should look like this :
research: frodo sam golumn
project: golumn sauron
project: golumn sauron
the word before the colon is the group name, like the one you specify on the Require group line. And the words after that is the users that belong to the group. In my setup sauron would only able to see the project repository (limiting his access). And so does frodo and sam, they can only see the research repository. While golumn would be able see both repo. Just what i wanted to.
If you wanted to have a lot of user that can access both group, you could create a new group and than add that group to the Require line