Serving HG repositories on Windows 2012 R2 Server.

Nicolas Pinault nicolas at aaton.com
Thu Sep 24 13:15:19 UTC 2015


Hi,

Le 24/09/2015 14:52, Anders Ishoey (INT) a écrit :
>
> Hi Aaron and Matt,
>
> I used your installation guide advice and I have tried lots of other 
> stuff too, but bottom line is that I don't think I can get any further 
> until I get a 2008 server to run at.
>
> The URL rewrite did not do the trick.
>
> I was actually using  2.7.10.
>
> Yes modifying Random is not the way to go.
>
> If you have any positive confirmation that someone is running HG on 
> 2012 IIS8.5 (and what versions they use) I would be happy to be updated.
>
> In that case I would also need some details about accounts 
> (application pool?) that is needed.
>
Have you tried TortoiseHg ?
I use an old Windows 2003 R2 server. I have installed TortoiseHg on it 
and I run HG server from TortoiseHg WorkBench.
This may not be the way you want to go but it can be an interesting test.
As this is an autonomous application, it does not interfere with Hg 
installed in Python27 directory.

Nicolas
>
> I'm grateful for the help you already gave, and I don't expect that 
> you spend more time on it.
>
> /Anders
>
> Additional info in case you are interested:
>
> Uninstalled python and mercurial python.
>
> Then I followed the guide 
> https://mercurial.selenic.com/wiki/HgWebInIisOnWindows, but on windows 
> server 2012 R2 it already failed (consistently) at the test.CGI. (due 
> to python 2.6.6)
>
> Adding the <handler> did not help, but allowing any CGI to run was 
> necessary.
>
> I then installed Python2.7.10 (Python 2.7.10 - 2015-05-23 
> <https://www.python.org/downloads/release/python-2710/> Windows x86-64 
> MSI installer 
> <https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64.msi>) 
> which made the test.cgi script pass.
>
> Running hgweb.cgi failed from the browser (already at import cgi.)
>
> "import cgi" worked from the python command line on the server but not 
> when included in a script started via the browser.
>
> *At this point I don't see that it is a HG problem.*
>
> It seems to be a CGI-IIS problem like reported here 
> (http://forums.iis.net/t/1192084.aspx) who says:
>
> /"Somehow it seems like my python CGI script does not have access to 
> that function when running from the IIS, while it has access to that 
> function when run from a command prompt"/
>
> However, If I could find the reason why the script fails it would be 
> good. therefore :
>
> If I then edit random.py  I can proceed as described in my previous 
> mail. Here is some additional information on the subject
>
> I dont see anything interesting in the server log. Are there any more 
> interesting logs that I can enable?
>
> #Software: Microsoft Internet Information Services 8.5
>
> #Version: 1.0
>
> #Date: 2015-09-24 11:47:04
>
> #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port 
> cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus 
> sc-win32-status time-taken
>
> 2015-09-24 11:47:04 10.45.3.27 GET /TestRepo cmd=capabilities 443 - 
> 10.45.2.210 mercurial/proto-1.0 - 401 2 5 0
>
> 2015-09-24 11:47:12 10.45.3.27 GET /TestRepo cmd=capabilities 443 air 
> 10.45.2.210 mercurial/proto-1.0 - 200 0 0 281
>
> 2015-09-24 11:47:12 10.45.3.27 GET /TestRepo cmd=batch 443 - 
> 10.45.2.210 mercurial/proto-1.0 - 401 2 5 0
>
> 2015-09-24 11:47:12 10.45.3.27 GET /TestRepo cmd=batch 443 air 
> 10.45.2.210 mercurial/proto-1.0 - 200 0 0 218
>
> 2015-09-24 11:47:12 10.45.3.27 POST /TestRepo cmd=unbundle 443 - 
> 10.45.2.210 mercurial/proto-1.0 - 401 2 5 15
>
> 2015-09-24 11:47:12 10.45.3.27 POST /TestRepo cmd=unbundle 443 air 
> 10.45.2.210 mercurial/proto-1.0 - 502 2 1 109
>
> I intended to use a debugger 
> (https://wiki.python.org/moin/PythonDebuggingTools) to see exactly 
> what stop the program now.
>
> However, I don't think it will work as the debugger will have to run 
> in some account, and exactly that may impact the debugging result.
>
> So I have more or less given in.
>
> */Anders Ishøy-Rasmussen*
>
> Systems Architect
>
> Teledyne-Reson
>
> *From:*Jensen, Aaron [mailto:ajensen at webmd.net]
> *Sent:* 2015-09-23 18:47
> *To:* Anders Ishoey (INT); mercurial at selenic.com
> *Subject:* RE: Serving HG repositories on Windows 2012 R2 Server.
>
> We have Mercurial running, without changes to Python or Mercurial 
> code, on Windows 2008 R2. The steps are documented on the 
> https://mercurial.selenic.com/wiki/HgWebInIisOnWindowswiki page.
>
> I believe the problem is that you have hgweb.cgi in the URL, which 
> won’t work. See section 3, Configuring IIS Rewrite Rules.
>
> *From:* Mercurial [mailto:mercurial-bounces at selenic.com] *On Behalf Of 
> *Anders Ishoey (INT)
> *Sent:* Wednesday, September 23, 2015 7:38 AM
> *To:* mercurial at selenic.com
> *Subject:* Serving HG repositories on Windows 2012 R2 Server.
>
> Hi,
>
> I'm trying to set up a 2012 R2 windows server with mercurial HG.
>
> browsing, pull, clone,add,commit works. push doesn't work.
>
> Setup:
>
> Basic authentication, pass-through, SSL
>
> Python 2.7 (had to modify random.py. line 114 to make it work)
>
> I only have that single python version.
>
> Using hgweb.cgi
>
> mercurial-3.3.3.win32-py2.7.msi is installed in the python 
> site-packages directory.
>
> Browsing my repositories, cloning and updating on HTTPS works
>
> However, I can't push.
>
> Repositories are in c:\users\public\hg_repos
>
> I have full rights in hg_repos and everything below.
>
> Scripts are in c:\users\public\hgweb
>
> I have placed a web.allow_push = * in .rc\hgrc in the repository
>
> I have tried
>
> mercurial-3.3.3.win-amd64-py2.7.msi
>
> mercurial-3.5.1.win32-py2.7.msi
>
> mercurial-3.5.1.win-amd64-py2.7.msi
>
> mercurial-3.5.win-amd64-py2.7.msi
>
> But none of these can even browse directories. (DLL load error. Dont 
> know the name of the DLL)
>
> In parallel with all this I have a regular (non-python) hg 
> installation for "hg init" on the server.
>
> Q1) Is there some setting in the IIS webserver itself that can prevent 
> writing and cause the error?
>
> Q2) Is there a known good installer configuration for Windows server 2012.
>
> Q2a) is python 3.0 better? Is there a mercurial-python3.0 installer 
> available?
>
> Q3) Are there (simple) tools that can tell more aobut the error
>
> *Error: *
>
> password:
>
> searching for changes
>
> abort: HTTP Error 502: Bad Gateway
>
> *Or, with more detailed output:*
>
> abort: 'https://slasvn02/hgweb.cgi/TestRepo' does not appear to be an 
> hg repository:
>
> ---%<--- (text/html)
>
> <body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
>
> <body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
>
> </font> </font> </font> </script> </object> </blockquote> </pre>
>
> </table> </table> </table> </table> </table> </font> </font> 
> </font><pre>Traceback (most recent call last):
>
>   File "C:\Users\Public\hgweb\hgweb.cgi", line 57, in <module>
>
>     application = hgweb(config)
>
>   File "c:\Python27\lib\site-packages\mercurial\hgweb\__init__.py", 
> line 26, in hgweb
>
>     return hgwebdir_mod.hgwebdir(config, baseui=baseui)
>
>   File 
> "c:\Python27\lib\site-packages\mercurial\hgweb\hgwebdir_mod.py", line 
> 89, in __init__
>
>     self.refresh()
>
>   File 
> "c:\Python27\lib\site-packages\mercurial\hgweb\hgwebdir_mod.py", line 
> 98, in refresh
>
>     u = ui.ui()
>
>   File "c:\Python27\lib\site-packages\mercurial\demandimport.py", line 
> 114, in __getattribute__
>
>     self._load()
>
>   File "c:\Python27\lib\site-packages\mercurial\demandimport.py", line 
> 86, in _load
>
>     mod = _hgextimport(_import, head, globals, locals, None, level)
>
> ---%<---
>
> *hgweb\hgweb.config*
>
> # all repos in subdirectories of "collections" will be exposed/visible 
> on the web interface.
>
> [collections]
>
> c:/Users/Public/hg_repos = c:/Users/Public/hg_repos
>
> [web]
>
> allow_push = *
>
> users = *
>
> push_ssl = true
>
> *hgweb\hgweb.cgi*
>
> #!c:\Python27\python.exe
>
> #This location is the one that is called: c:\Users\Public\hgweb\hgweb.cgi
>
> import os;
>
> import sys;
>
> sys.path.insert(0, "c:\program files (x86); 
> c:\Python27\Lib\site-packages\mercurial")
>
> sys.path.insert(0, "c:\Python27\Lib\site-packages\mercurial\pure")
>
> os.environ['PYTHONPATH'] = "c:\Python27\Lib\site-packages\mercurial; "
>
> import cgi
>
> from cgi import escape
>
> config="hgweb.config"
>
> import cgitb; cgitb.enable(display=1)
>
> from mercurial import demandimport; demandimport.enable()
>
> from mercurial.hgweb import hgweb, wsgicgi
>
> application = hgweb(config)
>
> wsgicgi.launch(application)
>
> *.rc\hgrc*
>
> [paths]
>
> c:/Users/Public/hg_repos/TestRepo = c:/Users/Public/hg_repos/TestRepo
>
> [ui]
>
> username = "anders Ishoy "
>
> [web]
>
> baseurl = C:\Users\Public\hg_repos\TestRepo
>
> allow_push = *
>
> users = *
>
> Thanks
>
> *Anders Ishøy-Rasmussen*
>
> Systems Architect
>
>
>
> _______________________________________________
> Mercurial mailing list
> Mercurial at selenic.com
> https://selenic.com/mailman/listinfo/mercurial


-- 
*Nicolas PINAULT
R&D electronics engineer
*** nicolas at aaton.com <mailto:nicolas at aaton.com>

*AATON-Digital*
38000 Grenoble - France
Tel +33 4 7642 9550

http://www.aaton.com
http://www.transvideo.eu
French Technologies for Film and Digital Cinematography

Follow us on Twitter
@Aaton_Digital
@Transvideo_HD

Like us on Facebook
https://www.facebook.com/AatonDigital

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20150924/f25816b7/attachment-0002.html>


More information about the Mercurial mailing list