Mercurial > hg
view contrib/hgwebdir.fcgi @ 9474:6ea653272c09
convert: fix marshalling in P4 convert extension to use a binary stream
The Perforce convert extension uses the p4 -G command line option and
marshal.load to obtain information about the history of a Perforce depot.
The method marshal.load must be provided with a binary stream (mode='rb') in
order to function reliably. Certain changelist descriptions or other elements
in a depot history could trigger a premature EOFError, causing the conversion
process to fail.
This may resolve the issue discussed in the following thread:
http://www.selenic.com/pipermail/mercurial/2009-July/026813.html
author | Peter Ingebretson <pingebre@yahoo.com> |
---|---|
date | Wed, 23 Sep 2009 15:36:51 +0200 |
parents | 43edbd8cc1e0 |
children |
line wrap: on
line source
#!/usr/bin/env python # # An example CGI script to export multiple hgweb repos, edit as necessary # adjust python path if not a system-wide install: #import sys #sys.path.insert(0, "/path/to/python/lib") # enable demandloading to reduce startup time from mercurial import demandimport; demandimport.enable() # Uncomment to send python tracebacks to the browser if an error occurs: #import cgitb #cgitb.enable() # If you'd like to serve pages with UTF-8 instead of your default # locale charset, you can do so by uncommenting the following lines. # Note that this will cause your .hgrc files to be interpreted in # UTF-8 and all your repo files to be displayed using UTF-8. # #import os #os.environ["HGENCODING"] = "UTF-8" from mercurial.hgweb.hgwebdir_mod import hgwebdir from flup.server.fcgi import WSGIServer # The config file looks like this. You can have paths to individual # repos, collections of repos in a directory tree, or both. # # [paths] # virtual/path1 = /real/path1 # virtual/path2 = /real/path2 # virtual/root = /real/root/* # / = /real/root2/* # # [collections] # /prefix/to/strip/off = /root/of/tree/full/of/repos # # paths example: # # * First two lines mount one repository into one virtual path, like # '/real/path1' into 'virtual/path1'. # # * The third entry tells every mercurial repository found in # '/real/root', recursively, should be mounted in 'virtual/root'. This # format is preferred over the [collections] one, using absolute paths # as configuration keys is not supported on every platform (including # Windows). # # * The last entry is a special case mounting all repositories in # '/real/root2' in the root of the virtual directory. # # collections example: say directory tree /foo contains repos /foo/bar, # /foo/quux/baz. Give this config section: # [collections] # /foo = /foo # Then repos will list as bar and quux/baz. # # Alternatively you can pass a list of ('virtual/path', '/real/path') tuples # or use a dictionary with entries like 'virtual/path': '/real/path' WSGIServer(hgwebdir('hgweb.config')).run()