diff --git a/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/hgbrowse.py b/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/hgbrowse.py
index e33cfa3f5f..214552e24f 100644
--- a/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/hgbrowse.py
+++ b/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/hgbrowse.py
@@ -57,7 +57,14 @@ name = getName(path)
length = 0
paths = []
repo = hg.repository(ui.ui(), path = repositoryPath)
-mf = repo[revision].manifest()
+subrepos = {}
+revCtx = repo[revision]
+mf = revCtx.manifest()
+hgsub = revCtx.filectx('.hgsub').data().split('\n')
+for line in hgsub:
+ parts = line.split('=')
+ if len(parts) > 1:
+ subrepos[parts[0].strip()] = parts[1].strip()
if path is "":
length = 1
@@ -72,6 +79,10 @@ else:
files = []
directories = []
+for k, v in subrepos.iteritems():
+ if k.startswith(path):
+ directories.append(k)
+
for p in paths:
parts = p.split('/')
depth = len(parts)
@@ -91,23 +102,26 @@ print ' ' + revision + ''
# todo print tag, and branch
print ' '
for dir in directories:
- print ' '
- print ' ' + getName(dir) + ''
- print ' ' + dir + ''
- print ' true'
- print ' '
+ print ' '
+ print ' ' + getName(dir) + ''
+ print ' ' + dir + ''
+ print ' true'
+ subrepo = subrepos[dir]
+ if subrepo != None:
+ print ' ' + subrepo + ''
+ print ' '
for file in files:
linkrev = repo[file.linkrev()]
time = int(linkrev.date()[0]) * 1000
desc = linkrev.description()
- print ' '
- print ' ' + getName(file.path()) + ''
- print ' ' + file.path() + ''
- print ' false'
- print ' ' + str(file.size()) + ''
- print ' ' + str(time).split('.')[0] + ''
- print ' ' + desc + ''
- print ' '
+ print ' '
+ print ' ' + getName(file.path()) + ''
+ print ' ' + file.path() + ''
+ print ' false'
+ print ' ' + str(file.size()) + ''
+ print ' ' + str(time).split('.')[0] + ''
+ print ' ' + desc + ''
+ print ' '
print ' '
print ''