(Arne Babenhauserheide)
2011-10-07: create commit files, too. create commit files, too.
diff --git a/static.py b/static.py --- a/static.py +++ b/static.py @@ -15,7 +15,7 @@ without the interactivity). * Create the static-dir in the repo: - Overview: Readme + commits + template ✔ - - Changes: Commit-Log + each commit as changeset/<hex> + - Changes: Commit-Log + each commit as commit/<hex> ✔ - source: a filetree, shown as sourcecode: src/<path> and raw/<path> - if b is used: a bugtracker: issue/<id>/<name> - fork-/clone-info for each entry in [paths] with its incoming data (if it has some): @@ -98,6 +98,8 @@ def writeoverview(ui, repo, target, name def writelog(ui, repo, target, name): """Write the full changelog, in steps of 100.""" commits = join(target, "commits") + + # create the folders if not isdir(commits): os.makedirs(commits) for i in range(len(repo.changelog)/100): @@ -105,6 +107,7 @@ def writelog(ui, repo, target, name): if not isdir(d): os.makedirs(d) + # create the log files t = cmdutil.changeset_templater(ui, repo, patch=False, diffopts=None, mapfile=None, buffered=False) t.use_template("""<div style='float: right; padding-left: 0.5em'><em>({author|person})</em></div><strong> {date|shortdate}: <a href='../commit/{node}.html'>{desc|strip|fill68|firstline}</a> <span style='font-size: xx-small'>{branches} {tags}</span><p>{desc|escape}</p>""") logs = [] @@ -136,6 +139,32 @@ def writelog(ui, repo, target, name): l.close() +def writecommits(ui, repo, target, name, force=False): + """Write all not yet existing commit files.""" + commit = join(target, "commit") + + # create the folders + if not isdir(commit): + os.makedirs(commit) + + t = cmdutil.changeset_templater(ui, repo, patch=False, diffopts=None, mapfile=None, buffered=False) + t.use_template("""<div style='float: right; padding-left: 0.5em'><em>({author|person})</em></div><strong> {date|shortdate}: <a href='../commit/{node}.html'>{desc|strip|fill68|firstline}</a> <span style='font-size: xx-small'>{branches} {tags}</span><p>{desc|escape}</p>""") + for c in range(len(repo.changelog)): + ctx = repo.changectx(str(c)) + cpath = join(commit, ctx.hex() + ".html") + if not force and isfile(cpath): + continue + with open(cpath, "w") as cf: + cf.write(templates["head"].replace("{reponame}", name)) + ui.pushbuffer() + t.show(ctx) + cf.write(ui.popbuffer()) + ui.pushbuffer() + commands.diff(ui, repo, change=str(c), git=True) + cf.write("<pre>"+ui.popbuffer().replace("<", "<")+"</pre>") + cf.write(templates["foot"].replace("{reponame}", name)) + + def parsesite(ui, repo, target, **opts): """Create the static folder.""" idfile = join(target, _staticidentifier) @@ -174,6 +203,10 @@ def parsesite(ui, repo, target, **opts): # and the log writelog(ui, repo, target, name) + # and all commit files + writecommits(ui, repo, target, name, force=opts["force"]) + + def addrepo(ui, repo, target): """Add the repo to the target and make sure it is up to date.""" try: @@ -206,6 +239,7 @@ cmdtable = { ('a', 'all', None, 'parse all revisions (requires much space)'), ('n', 'name', None, 'the repo name. Default: folder or last segment of the repo-path.'), ('u', 'upload', None, 'upload the repo'), + ('f', 'force', False, 'force recreating all commit files. Slow.'), ('s', 'screenstyle', None, 'use a custom stylesheet for display on screen'), ('p', 'printstyle', None, 'use a custom stylesheet for printing')], "[options] [folder]")