Add .git to gitweb projects list if only that version of path exists.
This commit is contained in:
parent
8a6cb39b9f
commit
4f6a8b8770
|
@ -25,7 +25,7 @@ To plug this into ``gitweb``, you have two choices.
|
||||||
isolates the changes a bit more nicely. Recommended.
|
isolates the changes a bit more nicely. Recommended.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os, urllib
|
import os, urllib, logging
|
||||||
|
|
||||||
from ConfigParser import RawConfigParser, NoSectionError, NoOptionError
|
from ConfigParser import RawConfigParser, NoSectionError, NoOptionError
|
||||||
|
|
||||||
|
@ -35,6 +35,16 @@ def _escape_filename(s):
|
||||||
s = s.replace('"', '\\"')
|
s = s.replace('"', '\\"')
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
def _getReposityDir(config):
|
||||||
|
repositories = os.path.expanduser('~')
|
||||||
|
try:
|
||||||
|
path = config.get('gitosis', 'repositories')
|
||||||
|
except (NoSectionError, NoOptionError):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
repositories = os.path.join(repositories, path)
|
||||||
|
return repositories
|
||||||
|
|
||||||
def generate(config, fp):
|
def generate(config, fp):
|
||||||
"""
|
"""
|
||||||
Generate a config file and projects list for ``gitweb``.
|
Generate a config file and projects list for ``gitweb``.
|
||||||
|
@ -45,6 +55,10 @@ def generate(config, fp):
|
||||||
:param fp: writable for ``projects.list``
|
:param fp: writable for ``projects.list``
|
||||||
:type fp: (file-like, anything with ``.write(data)``)
|
:type fp: (file-like, anything with ``.write(data)``)
|
||||||
"""
|
"""
|
||||||
|
log = logging.getLogger('gitosis.access.haveAccess')
|
||||||
|
|
||||||
|
repositories = _getReposityDir(config)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
global_enable = config.getboolean('gitosis', 'gitweb')
|
global_enable = config.getboolean('gitosis', 'gitweb')
|
||||||
except (NoSectionError, NoOptionError):
|
except (NoSectionError, NoOptionError):
|
||||||
|
@ -67,6 +81,16 @@ def generate(config, fp):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
name, = l
|
name, = l
|
||||||
|
|
||||||
|
if not os.path.exists(os.path.join(repositories, name)):
|
||||||
|
namedotgit = '%s.git' % name
|
||||||
|
if os.path.exists(os.path.join(repositories, namedotgit)):
|
||||||
|
name = namedotgit
|
||||||
|
else:
|
||||||
|
log.warning(
|
||||||
|
'Cannot find %(name)r in %(repositories)r'
|
||||||
|
% dict(name=name, repositories=repositories))
|
||||||
|
|
||||||
response = [name]
|
response = [name]
|
||||||
try:
|
try:
|
||||||
owner = config.get(section, 'owner')
|
owner = config.get(section, 'owner')
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
from nose.tools import eq_ as eq
|
from nose.tools import eq_ as eq
|
||||||
|
|
||||||
|
import os
|
||||||
from ConfigParser import RawConfigParser
|
from ConfigParser import RawConfigParser
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
|
||||||
from gitosis import gitweb
|
from gitosis import gitweb
|
||||||
|
from gitosis.test.util import mkdir, maketemp
|
||||||
|
|
||||||
def test_projectsList_empty():
|
def test_projectsList_empty():
|
||||||
cfg = RawConfigParser()
|
cfg = RawConfigParser()
|
||||||
|
@ -86,3 +88,20 @@ def test_projectsList_multiple_globalGitwebYes():
|
||||||
quux
|
quux
|
||||||
foo%2Fbar John+Doe
|
foo%2Fbar John+Doe
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
def test_projectsList_reallyEndsWithGit():
|
||||||
|
tmp = maketemp()
|
||||||
|
path = os.path.join(tmp, 'foo.git')
|
||||||
|
mkdir(path)
|
||||||
|
cfg = RawConfigParser()
|
||||||
|
cfg.add_section('gitosis')
|
||||||
|
cfg.set('gitosis', 'repositories', tmp)
|
||||||
|
cfg.add_section('repo foo')
|
||||||
|
cfg.set('repo foo', 'gitweb', 'yes')
|
||||||
|
got = StringIO()
|
||||||
|
gitweb.generate(
|
||||||
|
config=cfg,
|
||||||
|
fp=got)
|
||||||
|
eq(got.getvalue(), '''\
|
||||||
|
foo.git
|
||||||
|
''')
|
||||||
|
|
Loading…
Reference in a new issue