![]() Projects that can contain mercurial, git or svn repos, permits authentication, permissions system, code-review and commenting Multiple repos, permits authentication, no CGI Hg serve behind a proxy (Nginx) (Windows setup) Push has no authentication, so can only be used on trusted internal networks It is thus recommended to use Python 2.7.3 or higher (or 2.6.x, x>=8) and set the environment variable PYTHONHASHSEED=random when hgweb or other applications are exposed to the internet.Ĭan use existing web server (CGI, WSGI, mod_python, IIS), including authentication Python has an issue with hash collisions that potentially can allow denial of service when exposed to untrusted input. Note that starting with version 1.6 of Mercurial, the hgwebdir.cgi script no longer exists, and its functionality has been merged into the hgweb.cgi script which in most cases can be used with the same configuration. Some are more powerful than others but may require more effort to set up and administer.įor private or restricted-access repositories, aside from the solutions explicitly marked as "private/internal" in the table below, authentication measures (certificates, logins) can be applied to many of the "public" solutions in order to restrict access. There are a variety of different ways to publish your Mercurial repositories. See SecuringRepositories for guidance on how to secure a Mercurial repository published via the Internet. The table in the next section gives a comprehensive overview of the different repository publishing options. ![]() We won't cover it here, see StaticHTTP instead. This uses a much slower 'serverless' protocol called static-http. It is not really recommended except for temporary situations where you need to publish a repository for a few minutes, for example to pull changes from a laptop. This is hgweb, but running within Mercurial's built-in Web server. The recommended method for self-publishing repositories over HTTP is to use the hgweb scripts with a dedicated Web server such as Apache or IIS. The easiest way to share changes with other people using Mercurial is to publish them on the Web. Indicating the encoding of served content.Putting useful information in the index page.In the long run it might be good to retrieve the largefiles from the master instead of upstream, but getting it working at all is the first step. This should be done after changes are unbundled into SOMEREPO but before they are cloned/shared/pulled into MyJob, allowing the clone/share/pull to retrieve the largefiles 'naturally' and avoiding any warnings about an inability to find them during the initial update. I think the fix for this is to detect whether largefiles are enabled, and if so, for the master to issue an explicit 'lfpull' command, specifying the original upstream URL. SOMEREPO does not contain any upstream information at all (because it was populated entirely using bundling) and MyJob only contains SOMEREPO as upstream, so when MyJob is updated to the target revision prior to building, it complains that the largefiles "are not available" from SOMEREPO. ![]() var/build/workspace/MyJob - this was cloned/shared from SOMEREPO var/build/hgcache/SOMEREPO - this was created by bundling changes from the master When repository caching is enabled for distributed builds, the repository that eventually ends up in the workspace on the slave has lost upstream path information such that it is no longer able to pull largefiles.
0 Comments
Leave a Reply. |