On 02/09/2016 03:58 PM, Angel Ezquerra wrote:
Hi,

I am trying to setup Kallithea on a windows server and I have a few
questions. This email will be a bit long because I have many questions
and I'd like to give you some context first. If you want to just skip
to the questions you can find them below. But first, some context:

- Our main motivation to use Kallithea (at this point) is to gain the
ability to perform code reviews on our code.

- We also wonder if Kallithea might have better performance that the
existing "plain" mercurial server.

I doubt it. It calls out to the same hgweb. But it is usually "fast enough". If not, it is probably a configuration / setup / architecture issue.

Our current setup is as follows:
- We have an Apache-based (WSGI) mercurial server, running on a
Windows Server machine.
     - The mercurial server is a "plain" mercurial server that we have
customized a bit:
         - We have added a header to every mercurial server web page,
containing links to our issue tracker and to our customized TortoiseHg
(we use the web.MOTD setting to do this).
         - The header also has a link to open a dialog to  create a
repository and also to create a "link" (an NTFS junction) to an
existing repository

- We have over 1.500 mercurial repositories, organized in multiple
directories (and directories within directories, etc). To give you an
idea, the root contains 27 directories (corresponding to several
groups, projects, etc)
     - Some of the repos are pretty big (hundreds of megabytes) as they
contain binary files (I have no control over this, unfortunately).
     - May of our repositories contain subrepos.

How are they organized? Are you stuck with some hardcoded URLs?

     - In order to avoid duplication and to share the same components
among multiple projects we often create "repository links", which are
NTFS junctions (akin to Unix soft links)

Why do the same repository have to appear in multiple places? (Perhaps related to the previous question?)

     - We found that with that many repositories it is not practical to
use mercurial's "recursive path" definitions (i.e. using "**") to let
the server find the repos. It is just way too slow. That is why
instead we keep a list of every repository on our server, which is
automatically updated when someone creates a new repository or link
through our custom dialogs, and also by a script that runs every 15
minutes (in case an admin creates a repository manually)

Will you use Kallithea for creating repos?

So now the questions:

1. Is it possible to configure Kallithea as a "code review" only tool,
disabling both push and, above all, pull access?

If you want to that as 'configuration' only, I would do it by configuring filter in the web server.

I would probably prefer to have a local code customization that disable protocol access.

2. How well does Kallithea support subrepos? It seems that Kallithea
does not find subrepos when it scans for repositories, but maybe I
missed something...

There is a small snippet on http://kallithea.readthedocs.org/en/latest/usage/vcs_support.html#working-with-mercurial-subrepositories - but it doesn't say much.

I think 'server structure matches working directory structure' is problematic. There is the inherent problem that URLs become ambiguous when using that scheme. That ambiguity has to be resolved somewhere. Something could perhaps be implemented in Kallithea ... but I guess it would be better to do it elsewhere (web server configuration or client side).

3. How well would Kallithea coexist with our existing mercurial server
if they both pointed to the same repositories? That is, if we
configure Kallithea to look for repositories on the same location that
the existing mercurial server looks for them, would there be any
problems? In theory mercurial creates locks to avoid problems with
concurrent repository access. Should this work?
     - The reason I wonder this is that, at least for now, I'd rather
not replace our server with Kallithea, but add it as an alternative
interface. This would give people some time to tray it and give me
feedback.

I don't know 'mercurial server' (and I hate the name for being so misleading).

Repo write operations still use the same lock as hgweb ... but you don't want write anyway?

Kallithea uses another way of repo cache invalidation than hgweb. You can call something like paster update-repoinfo /srv/kallithea/kallithea.ini --invalidate-cache --update-only=$repopath
from a hgweb push hook.

4. Is there a way to configure the Kallithea interface, other than
manually modifying the HTML templates? In particular, is there a way
to add some sort of banner to every page server by Kallithea (to add
links to our issue tracker, our TortoiseHg installer, and so on)?
     - Also, is there a way to "brand" our server (e.g. adding our
company logo, changing the colors to our corporate colors, etc?)

There is the 'bugtracker' setting in the .ini file. There is also site branching in .../_admin/settings/global . Beyond that, you currently have the full freedom to hack the code ;-)

5. How fast can we expect Kallithea to be with our environment (in
particular with the number of repositories that we have)?
     - Should we expect the "raw  Kallithea" server to perform well or
should we investigate integrating it with our Apache server, or
perhaps using some other server (ISS, etc)?

What do you mean with "raw Kallithea"? The development standalone web server?

I would use a real web server - mostly to get easy management and a full featured web server and a simple setup. I prefer mod_wsgi.

No matter what: For bulk operations it calls out to the same Python mercurial stuff as hgweb and it will perform pretty much the same. Python is probably the bottleneck but still "fast enough" to saturate a Gbit connection on a normal server. Using a 'high performance' web server will probably not buy you anything.

6. How is the code review information stored by Kallithea?
     - Can be exported somehow? Can it be copied into a new Kallithea server?

It is stored in the database. You can get it with sql or other tools. I don't know what format you would want it in and I am not aware of any tools for any other format than sql dump.
7. What would be the best way to run Kallithea as a service on
Windows? There might be some page that explains this. If so just let
me know.

I assume you have browsed through the documentation and have seen the documentation of using Apache (the documentation assumes unix but I guess it is pretty much the same on windows) and IIS.

People with experience from running on Windows can probably share opinions and experience.


I hope this helps - and that you can help improving our documentation so it would have answered any questions I might have given a sufficiently good answer to here ;-)

/Mads

_______________________________________________
kallithea-general mailing list
[email protected]
http://lists.sfconservancy.org/mailman/listinfo/kallithea-general

Reply via email to