0

I've read about the single central repository vs. multiple repositories approach in Mercurial (e.g. these SO questions), and it's pretty clear that small repositories (one per self-contained project) is the right approach.

But this implies a large number of repositories, where by "large number" I mean enough that it's hard to keep track of which contains what. I'm in a small team (< 7 developers) and with the number of projects we work on, different branches/versions, etc., I can see us having 50 or 60 repositories.

Are there any tools out there to help catalog/manage a Mercurial server with dozens or hundreds of repositories?


edit: I'm using both SCM-Manager (within our firewall) and bitbucket (outside our firewall). Oh, and of course each developer is going to have his/her own local clones of a bunch of them.

The problem is not how to put large numbers of mercurial repositories on a server, but how to keep track of them all.

Community
  • 1
  • 1
Jason S
  • 184,598
  • 164
  • 608
  • 970
  • The description of the repo should be enough to keep track of the ones on the server and it's up to each developer to keep track of their own repositories. – Steve Kaye Apr 11 '13 at 20:17
  • With all due respect, you discount the effect of human error. – Jason S Apr 11 '13 at 20:29

2 Answers2

0

How are you serving these repositories? If you use hgweb then the simplest way is to add descriptions to your hgrc files on the server. You do this in the [web] section like this:

[web]
description=Description goes here

This adds the descriptions to the web based interface which is fine for us (we have about 30 repositories)

Other than that, I think that most of the options that you have involve choosing a web based publishing method that includes this functionality such as Rhodecode. Other publishing methods are available here.

Steve Kaye
  • 6,262
  • 2
  • 23
  • 27
0

As @Steve suggested, the web approach is very good. I manage 50+ repositories this way.

I have a process running the hg serve in a batch file:

hg serve --prefix mercurial --address my-hg-server --port 8000 --web-conf hg-web.conf --accesslog hg-access.log --errorlog hg-error.log

The hg-web.conf looks like this:

[web]
style = default
allow_push = *
push_ssl = false

[paths]
repos1 = \\hg-repos-server\repos1
repos2 = \\hg-repos-server\repos2
....

then, by accessing:

http : // my-hg-server:8000/mercurial

I get a page with links to all my repositories. A link can be copied and cloned by the user.

This is a very simple setup and works great for us.

You can wrap the hg serve batch file or shell script to be run as a service and you can put this all behind an Apache web server to manage more security.

I hope this helps

Eldad Assis
  • 10,464
  • 11
  • 52
  • 78