diff --git a/setup.py b/setup.py index 9c626a8f35dbc94d7f47e6de24725b20cfa0de5b..0ad6aa5fddca7fc6f74acf0b505a72e7b92f3ee3 100755 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Copyright (C) 2015-2020 The Software Heritage developers +# Copyright (C) 2015-2023 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information @@ -69,6 +69,7 @@ setup( lister.gitea=swh.lister.gitea:register lister.github=swh.lister.github:register lister.gitlab=swh.lister.gitlab:register + lister.gitweb=swh.lister.gitweb:register lister.gnu=swh.lister.gnu:register lister.golang=swh.lister.golang:register lister.gogs=swh.lister.gogs:register diff --git a/swh/lister/gitweb/__init__.py b/swh/lister/gitweb/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..acb2af12bfd1d8b27b6c555afdc13d94e0c9232c --- /dev/null +++ b/swh/lister/gitweb/__init__.py @@ -0,0 +1,12 @@ +# Copyright (C) 2023 The Software Heritage developers +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + + +def register(): + from .lister import GitwebLister + + return { + "lister": GitwebLister, + "task_modules": [f"{__name__}.tasks"], + } diff --git a/swh/lister/gitweb/lister.py b/swh/lister/gitweb/lister.py new file mode 100644 index 0000000000000000000000000000000000000000..57810a9e95bd63bbee63615cf3081490592f5e86 --- /dev/null +++ b/swh/lister/gitweb/lister.py @@ -0,0 +1,162 @@ +# Copyright (C) 2023 The Software Heritage developers +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +import logging +import re +from typing import Any, Dict, Iterator, List, Optional +from urllib.parse import urljoin, urlparse + +from bs4 import BeautifulSoup +from requests.exceptions import HTTPError + +from swh.lister.pattern import CredentialsType, StatelessLister +from swh.scheduler.interface import SchedulerInterface +from swh.scheduler.model import ListedOrigin + +logger = logging.getLogger(__name__) + +Repositories = List[Dict[str, Any]] + + +class GitwebLister(StatelessLister[Repositories]): + """Lister class for Gitweb repositories. + + This lister will retrieve the list of published git repositories by + parsing the HTML page(s) of the index retrieved at `url`. + + """ + + LISTER_NAME = "gitweb" + + def __init__( + self, + scheduler: SchedulerInterface, + url: Optional[str] = None, + instance: Optional[str] = None, + credentials: Optional[CredentialsType] = None, + max_origins_per_page: Optional[int] = None, + max_pages: Optional[int] = None, + enable_origins: bool = True, + ): + """Lister class for Gitweb repositories. + + Args: + url: (Optional) Root URL of the Gitweb instance, i.e. url of the index of + published git repositories on this instance. Defaults to + :file:`https://{instance}` if unset. + instance: Name of gitweb instance. Defaults to url's network location + if unset. + + """ + super().__init__( + scheduler=scheduler, + url=url, + instance=instance, + credentials=credentials, + max_origins_per_page=max_origins_per_page, + max_pages=max_pages, + enable_origins=enable_origins, + ) + + self.session.headers.update({"Accept": "application/html"}) + + def _get_and_parse(self, url: str) -> BeautifulSoup: + """Get the given url and parse the retrieved HTML using BeautifulSoup""" + response = self.http_request(url) + return BeautifulSoup(response.text, features="html.parser") + + def get_pages(self) -> Iterator[Repositories]: + """Generate git 'project' URLs found on the current Gitweb server + The last_update date is retrieved on the list of repo page to avoid + to compute it on the repository details which only give a date per branch + """ + bs_idx = self._get_and_parse(self.url) + + page_results = [] + + for tr in bs_idx.find("table", {"class": re.compile("project_list")}).find_all( + "tr" + ): + link = tr.find("a") + if not link: + continue + + repo_url = link["href"] + + if repo_url.endswith("?o=descr"): + continue + + # FIXME: Add parsing step from date interval like '9 years ago' to + # actual python datetime interval so we can derive last update + # span = tr.find("td", {"class": re.compile("age.*")}) + # last_updated_date = span.get("title") if span else None + # last_updated_date = None + + page_results.append({"url": repo_url}) + + yield page_results + + def get_origins_from_page( + self, repositories: Repositories + ) -> Iterator[ListedOrigin]: + """Convert a page of gitweb repositories into a list of ListedOrigins.""" + assert self.lister_obj.id is not None + + for repo in repositories: + origin_url = self._get_origin_from_repository_url(repo["url"]) + if origin_url is None: + continue + + yield ListedOrigin( + lister_id=self.lister_obj.id, + url=origin_url, + visit_type="git", + ) + + def _get_origin_from_repository_url(self, repository_url: str) -> Optional[str]: + """Extract the git url from the repository page""" + try: + bs = self._get_and_parse(repository_url) + except HTTPError as e: + logger.warning( + "Unexpected HTTP status code %s on %s", + e.response.status_code, + e.response.url, + ) + return None + + # check if we are on the summary tab, if not, go to this tab + tab = bs.find("table", {"class": "tabs"}) + if tab: + summary_a = tab.find("a", string="summary") + if summary_a: + summary_url = urljoin(repository_url, summary_a["href"]).strip("/") + + if summary_url != repository_url: + logger.debug( + "%s : Active tab is not the summary, trying to load the summary page", + repository_url, + ) + return self._get_origin_from_repository_url(summary_url) + else: + logger.debug("No summary tab found on %s", repository_url) + + urls = [ + row.contents[-1].string + for row in bs.find_all("tr", {"class": "metadata_url"}) + ] + + if not urls: + logger.debug("No git urls found on %s", repository_url) + return None + + # look for the http/https url, if any, and use it as origin_url + for url in urls: + if urlparse(url).scheme in ("http", "https"): + origin_url = url + break + else: + # otherwise, choose the first one + origin_url = urls[0] + return origin_url diff --git a/swh/lister/gitweb/tasks.py b/swh/lister/gitweb/tasks.py new file mode 100644 index 0000000000000000000000000000000000000000..5ff5439f2340f97ea9258efdfd4f6e878ab98251 --- /dev/null +++ b/swh/lister/gitweb/tasks.py @@ -0,0 +1,16 @@ +# Copyright (C) 2023 The Software Heritage developers +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +from typing import Dict + +from celery import shared_task + +from .lister import GitwebLister + + +@shared_task(name=f"{__name__}.GitwebListerTask") +def list_gitweb(**lister_args) -> Dict[str, str]: + """Lister task for Gitweb instances""" + lister = GitwebLister.from_configfile(**lister_args) + return lister.run().dict() diff --git a/swh/lister/gitweb/tests/__init__.py b/swh/lister/gitweb/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/README b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/README new file mode 100644 index 0000000000000000000000000000000000000000..fb47a1d5be40c45942d9f5179297135f851ce909 --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/README @@ -0,0 +1,5 @@ +These files are a partial dump of https://git.distorted.org.uk/~mdw/. + +To ease testing, the page is named index.html. It does not represent the reality of +those gitweb instances. + diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/foobar b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/foobar new file mode 100644 index 0000000000000000000000000000000000000000..328809400b5d0d58e432f5211283bd3beaf6c0e9 --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/foobar @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="mdw@git.distorted.org.uk Git projects list" href="https://git.distorted.org.uk/~mdw/?a=project_index" type="text/plain; charset=utf-8" /> +<link rel="alternate" title="mdw@git.distorted.org.uk Git projects feeds" href="https://git.distorted.org.uk/~mdw/?a=opml" type="text/x-opml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / </div> +<div class="index_include"> +<!-- -*-html-*- --> + hello +</div> +<div class="projsearch"> +<form method="get" action="https://git.distorted.org.uk/~mdw/" enctype="multipart/form-data"><input type="hidden" name="a" value="project_list" /> +<input type="text" name="s" size="60" title="Search project by name and description" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span> +<input type="submit" name="btnS" value="Search" /> +</form> +<a href="https://git.distorted.org.uk/~mdw/">List all projects</a><br /> +</div> +<table class="project_list"> +<tr> +<th>Project</th> +<th><a class="header" href="https://git.distorted.org.uk/~mdw/?o=descr">Description</a></th> +<th><a class="header" href="https://git.distorted.org.uk/~mdw/?o=owner">Owner</a></th> +<th><a class="header" href="https://git.distorted.org.uk/~mdw/?o=age">Last Change</a></th> +<th></th> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/adns">adns</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/adns" title="GNU ADNS, an asynchronous DNS stub resolver -- local hacking">GNU ADNS, an asynchronous... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">6 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/adns">summary</a> | <a href="https://git.distorted.org.uk/~mdw/adns/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/adns/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/adns/tree">tree</a></td> +</tr> +<tr class="light"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/anag">anag</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/anag" title="Simple word-game solver">Simple word-game solver</a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">3 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/anag">summary</a> | <a href="https://git.distorted.org.uk/~mdw/anag/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/anag/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/anag/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/atoms">atoms</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/atoms" title="Amusing computer-mediated board game. In Common Lisp, using GTK; hard to set up.">Amusing computer-mediated... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">10 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/atoms">summary</a> | <a href="https://git.distorted.org.uk/~mdw/atoms/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/atoms/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/atoms/tree">tree</a></td> +</tr> +<tr class="light"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/firewall">firewall</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/firewall" title="Firewall scripts for distorted.org.uk.">Firewall scripts for distorted... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">3 months ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall">summary</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips">doc/ips</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips" title="Introduction to Provable Security slides and notes">Introduction to Provable Secur... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">16 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips">summary</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools">mdwtools</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools" title="Various LaTeX packages">Various LaTeX packages</a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">7 weeks ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools">summary</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/scad">scad</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/scad" title="OpenSCAD models that I've designed.">OpenSCAD models that I've... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">3 months ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/scad">summary</a> | <a href="https://git.distorted.org.uk/~mdw/scad/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/scad/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/scad/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/strayman">strayman</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/strayman" title="LaTeX document class for various documents">LaTeX document class for vario... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">2 months ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman">summary</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey">udpkey</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey" title="Transmit and receive cryptographic keys over UDP; useful during boot.">Transmit and receive cryptogra... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">7 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey">summary</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree">tree</a></td> +</tr> +<tr class="light"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/vmctl">vmctl</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/vmctl" title="Constrained VM management, via SSH.">Constrained VM management... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">8 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/vmctl">summary</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/tree">tree</a></td> +</tr> +</table> +<div class="page_footer"> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/?a=opml">OPML</a> <a class="rss_logo" href="https://git.distorted.org.uk/~mdw/?a=project_index">TXT</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw new file mode 100644 index 0000000000000000000000000000000000000000..e9c501934b8f20d3ff88a26efaca77918e419d0c --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="mdw@git.distorted.org.uk Git projects list" href="https://git.distorted.org.uk/~mdw/?a=project_index" type="text/plain; charset=utf-8" /> +<link rel="alternate" title="mdw@git.distorted.org.uk Git projects feeds" href="https://git.distorted.org.uk/~mdw/?a=opml" type="text/x-opml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / </div> +<div class="index_include"> +<!-- -*-html-*- --> + <p>These are the GIT repositories for some of my various free software + projects, and some other projects I hack on or just find useful to + have local copies of. Feel free to browse them here.</p> + + <p>The primary source for browsing these projects is + <a href="https://git.distorted.org.uk/~mdw/"><tt>https://git.distorted.org.uk/~mdw/</tt></a>. + There's a similar browser at <a href="https://www.chiark.greenend.org.uk/ucgi/~mdw/git/"><tt>https://www.chiark.greenend.org.uk/ucgi/~mdw/git/</tt></a> + which might be faster, or more available, but very slightly less + up-to-date.</p> + + <p>Project <i>foo</i> can be cloned using any of the following URLs: + <ul> + <li><tt>https://git.distorted.org.uk/~mdw/git/</tt><i>foo</i></li> + <li><tt>git://git.distorted.org.uk/~mdw/</tt><i>foo</i></li> + <li><tt>https://www.chiark.greenend.org.uk/ucgi/~mdw/git/</tt><i>foo</i></li> + <li><tt>git://git.chiark.greenend.org.uk/~mdw/</tt><i>foo</i></li> + </ul> + The <tt>https://</tt>… URLs are recommended if you can use + them, because they provide a measure of authenticity (as well as the + obvious privacy benefits). + </p> + + <p>In order to build many of these projects, you'll need to build and + install <tt>cfd</tt>, and quite possibly one or more of the + libraries <tt>mLib</tt> and <tt>catacomb</tt>. You'll also need + recent-ish Autoconf, Automake and Libtool, and the Autoconf archive. + General procedure is as follows: + <ul> + <li>Run <tt>mdw-setup</tt>. This will run the appropriate + autotools.</li> + <li>Say <tt>mkdir build</tt> to make a build directory.</li> + <li>Say <tt>cd build</tt> to change to the build directory.</li> + <li>Say <tt>../configure</tt>, maybe with some options to control + the configuration process.</li> + <li>Say <tt>make</tt>.</li> + <li>Now start hacking on things.</li> + </ul> + If you wanted to build Debian packages, run <tt>mdw-setup + –d</tt> instead. This will skip making a <tt>build</tt> + directory, which is good because otherwise it interferes with the + Debian build process. The various <tt>debian/rules</tt> targets + should work OK after that.</p> + + <p>Please <a href="mailto:mdw@distorted.org.uk">mail me</a> patches!</p> +</div> +<div class="projsearch"> +<form method="get" action="https://git.distorted.org.uk/~mdw/" enctype="multipart/form-data"><input type="hidden" name="a" value="project_list" /> +<input type="text" name="s" size="60" title="Search project by name and description" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span> +<input type="submit" name="btnS" value="Search" /> +</form> +<a href="https://git.distorted.org.uk/~mdw/">List all projects</a><br /> +</div> +<table class="project_list"> +<tr> +<th>Project</th> +<th><a class="header" href="https://git.distorted.org.uk/~mdw/?o=descr">Description</a></th> +<th><a class="header" href="https://git.distorted.org.uk/~mdw/?o=owner">Owner</a></th> +<th><a class="header" href="https://git.distorted.org.uk/~mdw/?o=age">Last Change</a></th> +<th></th> +</tr> +<tr class="light"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/firewall">firewall</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/firewall" title="Firewall scripts for distorted.org.uk.">Firewall scripts for distorted... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">3 months ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall">summary</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips">doc/ips</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips" title="Introduction to Provable Security slides and notes">Introduction to Provable Secur... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">16 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips">summary</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools">mdwtools</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools" title="Various LaTeX packages">Various LaTeX packages</a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">7 weeks ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools">summary</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/scad">scad</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/scad" title="OpenSCAD models that I've designed.">OpenSCAD models that I've... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">3 months ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/scad">summary</a> | <a href="https://git.distorted.org.uk/~mdw/scad/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/scad/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/scad/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/strayman">strayman</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/strayman" title="LaTeX document class for various documents">LaTeX document class for vario... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">2 months ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman">summary</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree">tree</a></td> +</tr> +<tr class="dark"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey">udpkey</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey" title="Transmit and receive cryptographic keys over UDP; useful during boot.">Transmit and receive cryptogra... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">7 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey">summary</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree">tree</a></td> +</tr> +<tr class="light"> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/vmctl">vmctl</a></td> +<td><a class="list" href="https://git.distorted.org.uk/~mdw/vmctl" title="Constrained VM management, via SSH.">Constrained VM management... </a></td> +<td><i>Mark Wooding</i></td> +<td class="age2">8 years ago</td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/vmctl">summary</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/tree">tree</a></td> +</tr> +</table> +<div class="page_footer"> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/?a=opml">OPML</a> <a class="rss_logo" href="https://git.distorted.org.uk/~mdw/?a=project_index">TXT</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_doc_ips b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_doc_ips new file mode 100644 index 0000000000000000000000000000000000000000..796be69335ea073290c04c9d841c6edc67e2b6c2 --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_doc_ips @@ -0,0 +1,180 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git - doc/ips/summary</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="doc/ips - log - RSS feed" href="https://git.distorted.org.uk/~mdw/doc/ips/rss" type="application/rss+xml" /> +<link rel="alternate" title="doc/ips - log - RSS feed (no merges)" href="https://git.distorted.org.uk/~mdw/doc/ips/rss?opt=--no-merges" type="application/rss+xml" /> +<link rel="alternate" title="doc/ips - log - Atom feed" href="https://git.distorted.org.uk/~mdw/doc/ips/atom" type="application/atom+xml" /> +<link rel="alternate" title="doc/ips - log - Atom feed (no merges)" href="https://git.distorted.org.uk/~mdw/doc/ips/atom?opt=--no-merges" type="application/atom+xml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / <a href="https://git.distorted.org.uk/~mdw/?a=project_list;pf=doc">doc</a> / <a href="https://git.distorted.org.uk/~mdw/doc/ips">ips</a> / summary +</div> +<form method="get" action="https://git.distorted.org.uk/~mdw//doc/ips" enctype="multipart/form-data"><div class="search"> +<input name="a" type="hidden" value="search" /> +<input name="h" type="hidden" value="HEAD" /> +<select name="st" > +<option selected="selected" value="commit">commit</option> +<option value="grep">grep</option> +<option value="author">author</option> +<option value="committer">committer</option> +<option value="pickaxe">pickaxe</option> +</select> <a href="https://git.distorted.org.uk/~mdw/doc/ips/search_help" title="search help">?</a> search: +<input type="text" name="s" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span></div> +</form> +<div class="page_nav"> +summary | <a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/014f5211bd99f07f2bc962adb9edfded92d31b2b">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/014f5211bd99f07f2bc962adb9edfded92d31b2b">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree">tree</a><br/> +<br/> +</div> +<div class="title"> </div> +<table class="projects_list"> +<tr id="metadata_desc"><td>description</td><td>Introduction to Provable Security slides and notes</td></tr> +<tr id="metadata_owner"><td>owner</td><td>Mark Wooding</td></tr> +<tr id="metadata_lchange"><td>last change</td><td><span class="datetime">Wed, 1 Nov 2006 14:32:34 +0000</span> (14:32 +0000)</td></tr> +<tr class="metadata_url"><td>URL</td><td>https://git.distorted.org.uk/~mdw/doc/ips</td></tr> +<tr class="metadata_url"><td></td><td>git://git.distorted.org.uk/~mdw/doc/ips</td></tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog">shortlog</a> +</div> +<table class="shortlog"> +<tr class="dark"> +<td title="16 years ago"><i>2006-11-01</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/014f5211bd99f07f2bc962adb9edfded92d31b2b">ips.cls: Fix the page size of the PDF output.</a> <span class="refs"> <span class="head" title="heads/master"><a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog/refs/heads/master">master</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/014f5211bd99f07f2bc962adb9edfded92d31b2b">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/014f5211bd99f07f2bc962adb9edfded92d31b2b">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/014f5211bd99f07f2bc962adb9edfded92d31b2b">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/014f5211bd99f07f2bc962adb9edfded92d31b2b.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/014f5211bd99f07f2bc962adb9edfded92d31b2b.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="16 years ago"><i>2006-11-01</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/754df4fbcb15f30cfa7bb5a0a1e72384568ef743">Merge ponder:doc/ips</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/754df4fbcb15f30cfa7bb5a0a1e72384568ef743">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/754df4fbcb15f30cfa7bb5a0a1e72384568ef743">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/754df4fbcb15f30cfa7bb5a0a1e72384568ef743">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/754df4fbcb15f30cfa7bb5a0a1e72384568ef743.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/754df4fbcb15f30cfa7bb5a0a1e72384568ef743.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="16 years ago"><i>2006-11-01</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/2e24ecf52da0f6bd5d5873037c1b535edf32045f">auth-mac: Rewrite the stuff about universal hashing.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/2e24ecf52da0f6bd5d5873037c1b535edf32045f">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/2e24ecf52da0f6bd5d5873037c1b535edf32045f">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/2e24ecf52da0f6bd5d5873037c1b535edf32045f">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/2e24ecf52da0f6bd5d5873037c1b535edf32045f.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/2e24ecf52da0f6bd5d5873037c1b535edf32045f.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="16 years ago"><i>2006-09-12</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/57ea5481e3ef900bd2a23df2f117a3b5f382b885" title="Remove unnecessary $2^{-L}$ term from the AXU-hashing result.">Remove unnecessary $2^{-L}$ term from the AXU-hashing... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/57ea5481e3ef900bd2a23df2f117a3b5f382b885">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/57ea5481e3ef900bd2a23df2f117a3b5f382b885">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/57ea5481e3ef900bd2a23df2f117a3b5f382b885">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/57ea5481e3ef900bd2a23df2f117a3b5f382b885.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/57ea5481e3ef900bd2a23df2f117a3b5f382b885.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="17 years ago"><i>2006-03-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/07c44433fe814a81f2d87e161ccd36b4a072cbce">Kill obsolete setup script; set up gitiginore.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/07c44433fe814a81f2d87e161ccd36b4a072cbce">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/07c44433fe814a81f2d87e161ccd36b4a072cbce">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/07c44433fe814a81f2d87e161ccd36b4a072cbce">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/07c44433fe814a81f2d87e161ccd36b4a072cbce.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/07c44433fe814a81f2d87e161ccd36b4a072cbce.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="17 years ago"><i>2006-03-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/5431b6027340790876417c169ecf65220b6b1eeb">Makefile: Do subdirectory builds correctly.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/5431b6027340790876417c169ecf65220b6b1eeb">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/5431b6027340790876417c169ecf65220b6b1eeb">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/5431b6027340790876417c169ecf65220b6b1eeb">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/5431b6027340790876417c169ecf65220b6b1eeb.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/5431b6027340790876417c169ecf65220b6b1eeb.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="17 years ago"><i>2006-03-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/b912aadfc4eb26f1c4cf3332eb510b41a4d9a036">Expunge revision histories.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/b912aadfc4eb26f1c4cf3332eb510b41a4d9a036">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/b912aadfc4eb26f1c4cf3332eb510b41a4d9a036">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/b912aadfc4eb26f1c4cf3332eb510b41a4d9a036">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/b912aadfc4eb26f1c4cf3332eb510b41a4d9a036.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/b912aadfc4eb26f1c4cf3332eb510b41a4d9a036.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="17 years ago"><i>2006-03-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/6278c386d4ce1feeab4adba11c161602ade00414">enc-ies: Various tweakings and tidyings.</a> <span class="refs"> <span class="head" title="heads/svn"><a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog/refs/heads/svn">svn</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/6278c386d4ce1feeab4adba11c161602ade00414">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/6278c386d4ce1feeab4adba11c161602ade00414">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/6278c386d4ce1feeab4adba11c161602ade00414">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/6278c386d4ce1feeab4adba11c161602ade00414.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/6278c386d4ce1feeab4adba11c161602ade00414.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="17 years ago"><i>2006-03-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/1c35584f74096086e72f35760db57b3327e0dcd7">cls: Move amssymb earlier to prevent interference.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/1c35584f74096086e72f35760db57b3327e0dcd7">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/1c35584f74096086e72f35760db57b3327e0dcd7">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/1c35584f74096086e72f35760db57b3327e0dcd7">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/1c35584f74096086e72f35760db57b3327e0dcd7.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/1c35584f74096086e72f35760db57b3327e0dcd7.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="18 years ago"><i>2004-09-04</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/1e42e2eb07162c3163369f24e169da91dfc28503">The Great Upheaval -- step 1.</a> <span class="refs"> <span class="tag indirect" title="tags/1.1.1"><a href="https://git.distorted.org.uk/~mdw/doc/ips/tag/refs/tags/1.1.1">1.1.1</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/1e42e2eb07162c3163369f24e169da91dfc28503">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/1e42e2eb07162c3163369f24e169da91dfc28503">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/1e42e2eb07162c3163369f24e169da91dfc28503">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/1e42e2eb07162c3163369f24e169da91dfc28503.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/1e42e2eb07162c3163369f24e169da91dfc28503.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="20 years ago"><i>2002-07-17</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/d7891575df8f6673b4e4f65d556a171d8aab2ba0">Various small fixes.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/d7891575df8f6673b4e4f65d556a171d8aab2ba0">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/d7891575df8f6673b4e4f65d556a171d8aab2ba0">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/d7891575df8f6673b4e4f65d556a171d8aab2ba0">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/d7891575df8f6673b4e4f65d556a171d8aab2ba0.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/d7891575df8f6673b4e4f65d556a171d8aab2ba0.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="21 years ago"><i>2002-02-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/384bd7f2a9d1228cd25ad3c05f5202226f0a95af">New build system.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/384bd7f2a9d1228cd25ad3c05f5202226f0a95af">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/384bd7f2a9d1228cd25ad3c05f5202226f0a95af">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/384bd7f2a9d1228cd25ad3c05f5202226f0a95af">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/384bd7f2a9d1228cd25ad3c05f5202226f0a95af.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/384bd7f2a9d1228cd25ad3c05f5202226f0a95af.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="21 years ago"><i>2002-02-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/8bf17fdcf806a635d62549461f3c83e7feb7f167">Ignore new files.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/8bf17fdcf806a635d62549461f3c83e7feb7f167">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/8bf17fdcf806a635d62549461f3c83e7feb7f167">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/8bf17fdcf806a635d62549461f3c83e7feb7f167">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/8bf17fdcf806a635d62549461f3c83e7feb7f167.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/8bf17fdcf806a635d62549461f3c83e7feb7f167.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="21 years ago"><i>2002-02-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/fa9e486eb17abd8622299018e95be9fc2ad45c55">Put bibliography database list in one place.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/fa9e486eb17abd8622299018e95be9fc2ad45c55">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/fa9e486eb17abd8622299018e95be9fc2ad45c55">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/fa9e486eb17abd8622299018e95be9fc2ad45c55">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/fa9e486eb17abd8622299018e95be9fc2ad45c55.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/fa9e486eb17abd8622299018e95be9fc2ad45c55.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="21 years ago"><i>2002-02-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/aa3dde655076dc2ac35fd78c702ce50a25f25293">Move most of the hacking into `mdwslides.dtx'.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/aa3dde655076dc2ac35fd78c702ce50a25f25293">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/aa3dde655076dc2ac35fd78c702ce50a25f25293">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/aa3dde655076dc2ac35fd78c702ce50a25f25293">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/aa3dde655076dc2ac35fd78c702ce50a25f25293.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/aa3dde655076dc2ac35fd78c702ce50a25f25293.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="21 years ago"><i>2002-02-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/doc/ips/search?s=mdw;st=author" title="Search for commits authored by mdw">mdw</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/60153476700364947cb0b68a4e166cb1350b0674">New build system.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/60153476700364947cb0b68a4e166cb1350b0674">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commitdiff/60153476700364947cb0b68a4e166cb1350b0674">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/60153476700364947cb0b68a4e166cb1350b0674">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/60153476700364947cb0b68a4e166cb1350b0674.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/doc/ips/snapshot/60153476700364947cb0b68a4e166cb1350b0674.zip">zip</a>)</td> +</tr> +<tr> +<td colspan="4"><a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog">...</a></td> +</tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/doc/ips/tags">tags</a> +</div> +<table class="tags"> +<tr class="dark"> +<td><i>unknown</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/1e42e2eb07162c3163369f24e169da91dfc28503">1.1.1</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/tag/d9adb7e9bb288c0588b1b7b46654c3e0d87954f3"></a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/doc/ips/tag/d9adb7e9bb288c0588b1b7b46654c3e0d87954f3">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/1e42e2eb07162c3163369f24e169da91dfc28503">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog/refs/tags/1.1.1">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/log/refs/tags/1.1.1">log</a></td> +</tr><tr class="light"> +<td><i>unknown</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/doc/ips/commit/34309387d08e78b4296bba7a193f602ce5388279">1.1.0</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/doc/ips/tag/39969a237dd73ee3f127bf0800d0bd5f7550b9e6"></a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/doc/ips/tag/39969a237dd73ee3f127bf0800d0bd5f7550b9e6">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/commit/34309387d08e78b4296bba7a193f602ce5388279">commit</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog/refs/tags/1.1.0">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/log/refs/tags/1.1.0">log</a></td> +</tr></table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/doc/ips/heads">heads</a> +</div> +<table class="heads"> +<tr class="dark"> +<td><i>16 years ago</i></td> +<td class="current_head"><a class="list name" href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog/refs/heads/master">master</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog/refs/heads/master">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/log/refs/heads/master">log</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/refs/heads/master">tree</a></td> +</tr><tr class="light"> +<td><i>17 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog/refs/heads/svn">svn</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/doc/ips/shortlog/refs/heads/svn">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/log/refs/heads/svn">log</a> | <a href="https://git.distorted.org.uk/~mdw/doc/ips/tree/refs/heads/svn">tree</a></td> +</tr></table> +<div class="page_footer"> +<div class="page_footer_text">Introduction to Provable Security slides and notes</div> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/doc/ips/rss" title="log RSS feed">RSS</a> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/doc/ips/atom" title="log Atom feed">Atom</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_firewall b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_firewall new file mode 100644 index 0000000000000000000000000000000000000000..6113b2ac90ed33205fc1591d10e0446206bd6e7e --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_firewall @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git - firewall/summary</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="firewall - log - RSS feed" href="https://git.distorted.org.uk/~mdw/firewall/rss" type="application/rss+xml" /> +<link rel="alternate" title="firewall - log - RSS feed (no merges)" href="https://git.distorted.org.uk/~mdw/firewall/rss?opt=--no-merges" type="application/rss+xml" /> +<link rel="alternate" title="firewall - log - Atom feed" href="https://git.distorted.org.uk/~mdw/firewall/atom" type="application/atom+xml" /> +<link rel="alternate" title="firewall - log - Atom feed (no merges)" href="https://git.distorted.org.uk/~mdw/firewall/atom?opt=--no-merges" type="application/atom+xml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / <a href="https://git.distorted.org.uk/~mdw/firewall">firewall</a> / summary +</div> +<form method="get" action="https://git.distorted.org.uk/~mdw//firewall" enctype="multipart/form-data"><div class="search"> +<input name="a" type="hidden" value="search" /> +<input name="h" type="hidden" value="HEAD" /> +<select name="st" > +<option selected="selected" value="commit">commit</option> +<option value="grep">grep</option> +<option value="author">author</option> +<option value="committer">committer</option> +<option value="pickaxe">pickaxe</option> +</select> <a href="https://git.distorted.org.uk/~mdw/firewall/search_help" title="search help">?</a> search: +<input type="text" name="s" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span></div> +</form> +<div class="page_nav"> +summary | <a href="https://git.distorted.org.uk/~mdw/firewall/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commit/8a3660c1f5d30802baec439821c42ea93eb66584">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/8a3660c1f5d30802baec439821c42ea93eb66584">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree">tree</a><br/> +<br/> +</div> +<div class="title"> </div> +<table class="projects_list"> +<tr id="metadata_desc"><td>description</td><td>Firewall scripts for distorted.org.uk.</td></tr> +<tr id="metadata_owner"><td>owner</td><td>Mark Wooding</td></tr> +<tr id="metadata_lchange"><td>last change</td><td><span class="datetime">Thu, 16 Mar 2023 18:09:32 +0000</span> (18:09 +0000)</td></tr> +<tr class="metadata_url"><td>URL</td><td>https://git.distorted.org.uk/~mdw/firewall</td></tr> +<tr class="metadata_url"><td></td><td>git://git.distorted.org.uk/~mdw/firewall</td></tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/firewall/shortlog">shortlog</a> +</div> +<table class="shortlog"> +<tr class="dark"> +<td title="3 months ago"><i>2023-03-16</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/8a3660c1f5d30802baec439821c42ea93eb66584" title="local.m4: Fix the IPv4 version of the `inbound-untrusted' chain.">local.m4: Fix the IPv4 version of the `inbound-untruste... </a> <span class="refs"> <span class="head" title="heads/master"><a href="https://git.distorted.org.uk/~mdw/firewall/shortlog/refs/heads/master">master</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/8a3660c1f5d30802baec439821c42ea93eb66584">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/8a3660c1f5d30802baec439821c42ea93eb66584">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/8a3660c1f5d30802baec439821c42ea93eb66584">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/8a3660c1f5d30802baec439821c42ea93eb66584.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/8a3660c1f5d30802baec439821c42ea93eb66584.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="4 months ago"><i>2023-02-25</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/d41e2f123e242866ae3cac6919cc1ce73825c605" title="local.mk, roadstar.m4: Move lpr service to roadstar; decommission vampire.">local.mk, roadstar.m4: Move lpr service to roadstar... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/d41e2f123e242866ae3cac6919cc1ce73825c605">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/d41e2f123e242866ae3cac6919cc1ce73825c605">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/d41e2f123e242866ae3cac6919cc1ce73825c605">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/d41e2f123e242866ae3cac6919cc1ce73825c605.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/d41e2f123e242866ae3cac6919cc1ce73825c605.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="13 months ago"><i>2022-05-30</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/599e123ad47ff30d11eb91fd74262b5cf90d3257">*.m4: Actually allow NFS to untrusted hosts.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/599e123ad47ff30d11eb91fd74262b5cf90d3257">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/599e123ad47ff30d11eb91fd74262b5cf90d3257">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/599e123ad47ff30d11eb91fd74262b5cf90d3257">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/599e123ad47ff30d11eb91fd74262b5cf90d3257.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/599e123ad47ff30d11eb91fd74262b5cf90d3257.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="13 months ago"><i>2022-05-30</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/94ce6e764e92676c1a7dea68820bcf198ea4c466" title="local.m4, etc.: Establish `inbound-untrusted' chain and deploy.">local.m4, etc.: Establish `inbound-untrusted' chain... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/94ce6e764e92676c1a7dea68820bcf198ea4c466">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/94ce6e764e92676c1a7dea68820bcf198ea4c466">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/94ce6e764e92676c1a7dea68820bcf198ea4c466">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/94ce6e764e92676c1a7dea68820bcf198ea4c466.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/94ce6e764e92676c1a7dea68820bcf198ea4c466.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="13 months ago"><i>2022-05-30</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/4942d7c1381f147b6c1f06e035d710e29b45dae0" title="fender.m4, ibanez.m4, vampire.m4: Invoke `footables' via `run'.">fender.m4, ibanez.m4, vampire.m4: Invoke `footables... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/4942d7c1381f147b6c1f06e035d710e29b45dae0">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/4942d7c1381f147b6c1f06e035d710e29b45dae0">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/4942d7c1381f147b6c1f06e035d710e29b45dae0">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/4942d7c1381f147b6c1f06e035d710e29b45dae0.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/4942d7c1381f147b6c1f06e035d710e29b45dae0.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="13 months ago"><i>2022-05-09</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/f788388b46884fb049640a504a0e95238277e1a2" title="Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/firewall">Merge branch 'master' of git.distorted.org.uk:~mdw... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/f788388b46884fb049640a504a0e95238277e1a2">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/f788388b46884fb049640a504a0e95238277e1a2">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/f788388b46884fb049640a504a0e95238277e1a2">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/f788388b46884fb049640a504a0e95238277e1a2.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/f788388b46884fb049640a504a0e95238277e1a2.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="13 months ago"><i>2022-05-09</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/25778fe86b2806f0a179662ad70c9787f92af767" title="numbers.m4, artist.m4: Add a second DisOrder port for RTP multicast.">numbers.m4, artist.m4: Add a second DisOrder port for... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/25778fe86b2806f0a179662ad70c9787f92af767">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/25778fe86b2806f0a179662ad70c9787f92af767">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/25778fe86b2806f0a179662ad70c9787f92af767">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/25778fe86b2806f0a179662ad70c9787f92af767.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/25778fe86b2806f0a179662ad70c9787f92af767.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="13 months ago"><i>2022-05-09</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/175f1d48c46ae845fbaa3298a000e13ffb4e62fd">local.m4: Add `mdwdev.upn'.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/175f1d48c46ae845fbaa3298a000e13ffb4e62fd">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/175f1d48c46ae845fbaa3298a000e13ffb4e62fd">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/175f1d48c46ae845fbaa3298a000e13ffb4e62fd">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/175f1d48c46ae845fbaa3298a000e13ffb4e62fd.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/175f1d48c46ae845fbaa3298a000e13ffb4e62fd.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="20 months ago"><i>2021-11-01</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/5e5950c5e929593b05740aa4173c93c50eac0110">jazz.m4, numbers.m4: Allow Privoxy access to SGO VPN.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/5e5950c5e929593b05740aa4173c93c50eac0110">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/5e5950c5e929593b05740aa4173c93c50eac0110">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/5e5950c5e929593b05740aa4173c93c50eac0110">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/5e5950c5e929593b05740aa4173c93c50eac0110.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/5e5950c5e929593b05740aa4173c93c50eac0110.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="2 years ago"><i>2021-02-03</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/c8d1a00b58e6621d5929d8938ca893ed995fb6fa">local.m4: Update external NTP servers.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/c8d1a00b58e6621d5929d8938ca893ed995fb6fa">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/c8d1a00b58e6621d5929d8938ca893ed995fb6fa">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/c8d1a00b58e6621d5929d8938ca893ed995fb6fa">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/c8d1a00b58e6621d5929d8938ca893ed995fb6fa.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/c8d1a00b58e6621d5929d8938ca893ed995fb6fa.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="3 years ago"><i>2020-04-08</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/ea2e5ed4e1bbb86b70c69a96c72e3809284fe293">local.m4: Add entry for new laptop `spirit'.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/ea2e5ed4e1bbb86b70c69a96c72e3809284fe293">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/ea2e5ed4e1bbb86b70c69a96c72e3809284fe293">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/ea2e5ed4e1bbb86b70c69a96c72e3809284fe293">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/ea2e5ed4e1bbb86b70c69a96c72e3809284fe293.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/ea2e5ed4e1bbb86b70c69a96c72e3809284fe293.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="4 years ago"><i>2018-12-26</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/1b1012475aa2ffe55ac358220c15c970cb49df4a" title="local.m4, precision.m4: Introduce `vpnnat' network class for nefarious hacks.">local.m4, precision.m4: Introduce `vpnnat' network... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/1b1012475aa2ffe55ac358220c15c970cb49df4a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/1b1012475aa2ffe55ac358220c15c970cb49df4a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/1b1012475aa2ffe55ac358220c15c970cb49df4a">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/1b1012475aa2ffe55ac358220c15c970cb49df4a.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/1b1012475aa2ffe55ac358220c15c970cb49df4a.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="4 years ago"><i>2018-12-26</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/d21c8fa90dc31cc1f552de6fd3c22d1cefa1d15d">local.mk: Reinstate mango.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/d21c8fa90dc31cc1f552de6fd3c22d1cefa1d15d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/d21c8fa90dc31cc1f552de6fd3c22d1cefa1d15d">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/d21c8fa90dc31cc1f552de6fd3c22d1cefa1d15d">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/d21c8fa90dc31cc1f552de6fd3c22d1cefa1d15d.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/d21c8fa90dc31cc1f552de6fd3c22d1cefa1d15d.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="5 years ago"><i>2017-10-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/7377aca7bc3d4cfd29e6974c861048db8e1a4161">local.m4: Filter out source routing in the firewall.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/7377aca7bc3d4cfd29e6974c861048db8e1a4161">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/7377aca7bc3d4cfd29e6974c861048db8e1a4161">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/7377aca7bc3d4cfd29e6974c861048db8e1a4161">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/7377aca7bc3d4cfd29e6974c861048db8e1a4161.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/7377aca7bc3d4cfd29e6974c861048db8e1a4161.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="5 years ago"><i>2017-10-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/994ac8d0782c89a636f47b02a2dc096c72ff58c5">local.m4: Don't expect `forbidden' to return.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/994ac8d0782c89a636f47b02a2dc096c72ff58c5">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/994ac8d0782c89a636f47b02a2dc096c72ff58c5">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/994ac8d0782c89a636f47b02a2dc096c72ff58c5">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/994ac8d0782c89a636f47b02a2dc096c72ff58c5.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/994ac8d0782c89a636f47b02a2dc096c72ff58c5.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="5 years ago"><i>2017-10-01</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/firewall/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/firewall/commit/d0409c909cb113596f5d0daed5be237a42878c8d">local.m4: Add the `hippotat' network.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/commit/d0409c909cb113596f5d0daed5be237a42878c8d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/commitdiff/d0409c909cb113596f5d0daed5be237a42878c8d">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/d0409c909cb113596f5d0daed5be237a42878c8d">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/d0409c909cb113596f5d0daed5be237a42878c8d.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/firewall/snapshot/d0409c909cb113596f5d0daed5be237a42878c8d.zip">zip</a>)</td> +</tr> +<tr> +<td colspan="4"><a href="https://git.distorted.org.uk/~mdw/firewall/shortlog">...</a></td> +</tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/firewall/heads">heads</a> +</div> +<table class="heads"> +<tr class="dark"> +<td><i>3 months ago</i></td> +<td class="current_head"><a class="list name" href="https://git.distorted.org.uk/~mdw/firewall/shortlog/refs/heads/master">master</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/shortlog/refs/heads/master">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/log/refs/heads/master">log</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/refs/heads/master">tree</a></td> +</tr><tr class="light"> +<td><i>8 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/firewall/shortlog/refs/heads/jaguar">jaguar</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/shortlog/refs/heads/jaguar">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/log/refs/heads/jaguar">log</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/refs/heads/jaguar">tree</a></td> +</tr><tr class="dark"> +<td><i>11 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/firewall/shortlog/refs/heads/emergency">emergency</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/firewall/shortlog/refs/heads/emergency">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/log/refs/heads/emergency">log</a> | <a href="https://git.distorted.org.uk/~mdw/firewall/tree/refs/heads/emergency">tree</a></td> +</tr></table> +<div class="page_footer"> +<div class="page_footer_text">Firewall scripts for distorted.org.uk.</div> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/firewall/rss" title="log RSS feed">RSS</a> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/firewall/atom" title="log Atom feed">Atom</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> \ No newline at end of file diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_mdwtools b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_mdwtools new file mode 100644 index 0000000000000000000000000000000000000000..6ab1686e95aa47b500187f1f286afce46911c93c --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_mdwtools @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git - mdwtools/summary</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="mdwtools - log - RSS feed" href="https://git.distorted.org.uk/~mdw/mdwtools/rss" type="application/rss+xml" /> +<link rel="alternate" title="mdwtools - log - RSS feed (no merges)" href="https://git.distorted.org.uk/~mdw/mdwtools/rss?opt=--no-merges" type="application/rss+xml" /> +<link rel="alternate" title="mdwtools - log - Atom feed" href="https://git.distorted.org.uk/~mdw/mdwtools/atom" type="application/atom+xml" /> +<link rel="alternate" title="mdwtools - log - Atom feed (no merges)" href="https://git.distorted.org.uk/~mdw/mdwtools/atom?opt=--no-merges" type="application/atom+xml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / <a href="https://git.distorted.org.uk/~mdw/mdwtools">mdwtools</a> / summary +</div> +<form method="get" action="https://git.distorted.org.uk/~mdw//mdwtools" enctype="multipart/form-data"><div class="search"> +<input name="a" type="hidden" value="search" /> +<input name="h" type="hidden" value="HEAD" /> +<select name="st" > +<option selected="selected" value="commit">commit</option> +<option value="grep">grep</option> +<option value="author">author</option> +<option value="committer">committer</option> +<option value="pickaxe">pickaxe</option> +</select> <a href="https://git.distorted.org.uk/~mdw/mdwtools/search_help" title="search help">?</a> search: +<input type="text" name="s" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span></div> +</form> +<div class="page_nav"> +summary | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/6d44932aa5c1786d1feb36ff0cb2b3402177b40d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/6d44932aa5c1786d1feb36ff0cb2b3402177b40d">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree">tree</a><br/> +<br/> +</div> +<div class="title"> </div> +<table class="projects_list"> +<tr id="metadata_desc"><td>description</td><td>Various LaTeX packages</td></tr> +<tr id="metadata_owner"><td>owner</td><td>Mark Wooding</td></tr> +<tr id="metadata_lchange"><td>last change</td><td><span class="datetime">Mon, 8 Jun 2020 15:59:38 +0000</span> (16:59 +0100)</td></tr> +<tr class="metadata_url"><td>URL</td><td>https://git.distorted.org.uk/~mdw/mdwtools</td></tr> +<tr class="metadata_url"><td></td><td>git://git.distorted.org.uk/~mdw/mdwtools</td></tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog">shortlog</a> +</div> +<table class="shortlog"> +<tr class="dark"> +<td title="3 years ago"><i>2020-06-08</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/6d44932aa5c1786d1feb36ff0cb2b3402177b40d" title=".mdw-build.conf: Don't try `vpath' builds with this package.">.mdw-build.conf: Don't try `vpath' builds with this... </a> <span class="refs"> <span class="head" title="heads/master"><a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/heads/master">master</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/6d44932aa5c1786d1feb36ff0cb2b3402177b40d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/6d44932aa5c1786d1feb36ff0cb2b3402177b40d">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/6d44932aa5c1786d1feb36ff0cb2b3402177b40d">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/6d44932aa5c1786d1feb36ff0cb2b3402177b40d.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/6d44932aa5c1786d1feb36ff0cb2b3402177b40d.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="3 years ago"><i>2020-06-08</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/bc0ae2eda4dc4b8e60d229300999c9cf07c59fee">Release 1.8.2.</a> <span class="refs"> <span class="tag indirect" title="tags/1.8.2"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/refs/tags/1.8.2">1.8.2</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/bc0ae2eda4dc4b8e60d229300999c9cf07c59fee">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/bc0ae2eda4dc4b8e60d229300999c9cf07c59fee">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/bc0ae2eda4dc4b8e60d229300999c9cf07c59fee">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/bc0ae2eda4dc4b8e60d229300999c9cf07c59fee.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/bc0ae2eda4dc4b8e60d229300999c9cf07c59fee.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="3 years ago"><i>2020-06-08</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/ee658485c2f48cd94b2e934c750628a1c28389a3">debian/changelog: Delete trailing blank line.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/ee658485c2f48cd94b2e934c750628a1c28389a3">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/ee658485c2f48cd94b2e934c750628a1c28389a3">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/ee658485c2f48cd94b2e934c750628a1c28389a3">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/ee658485c2f48cd94b2e934c750628a1c28389a3.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/ee658485c2f48cd94b2e934c750628a1c28389a3.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="3 years ago"><i>2020-06-07</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/f76fbef37b2af3292764729f496f578037cdc314">sverb.dtx: Include the `\jobname' in demo filenames.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/f76fbef37b2af3292764729f496f578037cdc314">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/f76fbef37b2af3292764729f496f578037cdc314">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/f76fbef37b2af3292764729f496f578037cdc314">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/f76fbef37b2af3292764729f496f578037cdc314.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/f76fbef37b2af3292764729f496f578037cdc314.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="3 years ago"><i>2020-06-07</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/d03425ae7b92642a8191def60419d91a0d309fb2">Makefile.m4: Fix dependencies for parallel building.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/d03425ae7b92642a8191def60419d91a0d309fb2">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/d03425ae7b92642a8191def60419d91a0d309fb2">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/d03425ae7b92642a8191def60419d91a0d309fb2">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/d03425ae7b92642a8191def60419d91a0d309fb2.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/d03425ae7b92642a8191def60419d91a0d309fb2.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="3 years ago"><i>2020-06-07</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/79d2ba13adadaf724f8daa40c464d1b07d980ab8">syntax.dtx: Disable ligatures in `\readupto'.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/79d2ba13adadaf724f8daa40c464d1b07d980ab8">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/79d2ba13adadaf724f8daa40c464d1b07d980ab8">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/79d2ba13adadaf724f8daa40c464d1b07d980ab8">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/79d2ba13adadaf724f8daa40c464d1b07d980ab8.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/79d2ba13adadaf724f8daa40c464d1b07d980ab8.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="3 years ago"><i>2019-08-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/3aea29e218d22c6c102b4576f12968aea6bf13aa">Release 1.8.1.</a> <span class="refs"> <span class="tag indirect" title="tags/1.8.1"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/refs/tags/1.8.1">1.8.1</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/3aea29e218d22c6c102b4576f12968aea6bf13aa">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/3aea29e218d22c6c102b4576f12968aea6bf13aa">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/3aea29e218d22c6c102b4576f12968aea6bf13aa">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/3aea29e218d22c6c102b4576f12968aea6bf13aa.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/3aea29e218d22c6c102b4576f12968aea6bf13aa.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="3 years ago"><i>2019-08-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/d3d35d4b9cd15420d2111264dab1977517b1d02e">Makefile.m4: Collect version using `auto-version'.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/d3d35d4b9cd15420d2111264dab1977517b1d02e">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/d3d35d4b9cd15420d2111264dab1977517b1d02e">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/d3d35d4b9cd15420d2111264dab1977517b1d02e">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/d3d35d4b9cd15420d2111264dab1977517b1d02e.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/d3d35d4b9cd15420d2111264dab1977517b1d02e.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="3 years ago"><i>2019-08-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/6d6d46d23ef867934608b1362b3ae754e7af7156">Makefile.m4: Build PDF versions of the documents.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/6d6d46d23ef867934608b1362b3ae754e7af7156">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/6d6d46d23ef867934608b1362b3ae754e7af7156">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/6d6d46d23ef867934608b1362b3ae754e7af7156">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/6d6d46d23ef867934608b1362b3ae754e7af7156.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/6d6d46d23ef867934608b1362b3ae754e7af7156.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="3 years ago"><i>2019-08-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/d93764b338514894110ad0a7f51391da1862d9cc">Release 1.8.0.</a> <span class="refs"> <span class="tag indirect" title="tags/1.8.0"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/refs/tags/1.8.0">1.8.0</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/d93764b338514894110ad0a7f51391da1862d9cc">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/d93764b338514894110ad0a7f51391da1862d9cc">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/d93764b338514894110ad0a7f51391da1862d9cc">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/d93764b338514894110ad0a7f51391da1862d9cc.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/d93764b338514894110ad0a7f51391da1862d9cc.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="3 years ago"><i>2019-08-02</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/e0464890d25b3299ff008d946e49d3fcf657694b">mdwref.dtx: Add a useful output-formatting hook.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/e0464890d25b3299ff008d946e49d3fcf657694b">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/e0464890d25b3299ff008d946e49d3fcf657694b">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/e0464890d25b3299ff008d946e49d3fcf657694b">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/e0464890d25b3299ff008d946e49d3fcf657694b.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/e0464890d25b3299ff008d946e49d3fcf657694b.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="7 years ago"><i>2016-01-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/9d809eaca2b424a34222f8912d58d476720ffa24">mdwtab.dtx: Fix group nesting in `smarray'.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/9d809eaca2b424a34222f8912d58d476720ffa24">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/9d809eaca2b424a34222f8912d58d476720ffa24">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/9d809eaca2b424a34222f8912d58d476720ffa24">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/9d809eaca2b424a34222f8912d58d476720ffa24.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/9d809eaca2b424a34222f8912d58d476720ffa24.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="7 years ago"><i>2016-01-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/eafdddad07cf0a91ba07cbd9309a0a46e3bd00ac">Eliminate tabs from TeX input files.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/eafdddad07cf0a91ba07cbd9309a0a46e3bd00ac">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/eafdddad07cf0a91ba07cbd9309a0a46e3bd00ac">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/eafdddad07cf0a91ba07cbd9309a0a46e3bd00ac">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/eafdddad07cf0a91ba07cbd9309a0a46e3bd00ac.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/eafdddad07cf0a91ba07cbd9309a0a46e3bd00ac.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="7 years ago"><i>2015-11-17</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/88ddb950817e0413117789eaaee3752e9630453d" title="syntax.dtx: Allow decorative material following nonterminal name in `grammar'.">syntax.dtx: Allow decorative material following nonterm... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/88ddb950817e0413117789eaaee3752e9630453d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/88ddb950817e0413117789eaaee3752e9630453d">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/88ddb950817e0413117789eaaee3752e9630453d">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/88ddb950817e0413117789eaaee3752e9630453d.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/88ddb950817e0413117789eaaee3752e9630453d.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="7 years ago"><i>2015-10-06</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/7ef5ba2c0461a5ba964a46fd8e70ba9b6ba355a4">mdwtab.dtx: Cope when \if@leqno is frobbed dynamically.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/7ef5ba2c0461a5ba964a46fd8e70ba9b6ba355a4">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/7ef5ba2c0461a5ba964a46fd8e70ba9b6ba355a4">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/7ef5ba2c0461a5ba964a46fd8e70ba9b6ba355a4">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/7ef5ba2c0461a5ba964a46fd8e70ba9b6ba355a4.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/7ef5ba2c0461a5ba964a46fd8e70ba9b6ba355a4.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="7 years ago"><i>2015-10-04</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/mdwtools/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/7b2adc290673aa432bbbecd130473d38408961e4">configure.in: Automake is now pickier about ordering.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/7b2adc290673aa432bbbecd130473d38408961e4">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commitdiff/7b2adc290673aa432bbbecd130473d38408961e4">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/7b2adc290673aa432bbbecd130473d38408961e4">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/7b2adc290673aa432bbbecd130473d38408961e4.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/mdwtools/snapshot/7b2adc290673aa432bbbecd130473d38408961e4.zip">zip</a>)</td> +</tr> +<tr> +<td colspan="4"><a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog">...</a></td> +</tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/mdwtools/tags">tags</a> +</div> +<table class="tags"> +<tr class="dark"> +<td><i>3 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/bc0ae2eda4dc4b8e60d229300999c9cf07c59fee">1.8.2</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/tag/cbdea5ebd7c2b75bac33851b772ea356ff95d5fa">Release 1.8.2.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/cbdea5ebd7c2b75bac33851b772ea356ff95d5fa">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/bc0ae2eda4dc4b8e60d229300999c9cf07c59fee">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/tags/1.8.2">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log/refs/tags/1.8.2">log</a></td> +</tr><tr class="light"> +<td><i>3 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/3aea29e218d22c6c102b4576f12968aea6bf13aa">1.8.1</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/tag/9c8cbcf36c7351a4b34bb172cbd6e74acb820a0d">Release 1.8.1.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/9c8cbcf36c7351a4b34bb172cbd6e74acb820a0d">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/3aea29e218d22c6c102b4576f12968aea6bf13aa">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/tags/1.8.1">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log/refs/tags/1.8.1">log</a></td> +</tr><tr class="dark"> +<td><i>3 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/d93764b338514894110ad0a7f51391da1862d9cc">1.8.0</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/tag/38283b12514c45a0987d1d6b91474845a7a8c232">Release 1.8.0.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/38283b12514c45a0987d1d6b91474845a7a8c232">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/d93764b338514894110ad0a7f51391da1862d9cc">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/tags/1.8.0">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log/refs/tags/1.8.0">log</a></td> +</tr><tr class="light"> +<td><i>10 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/83b69571df4f07673f434e614301ed009e02ad98">1.7.0</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/tag/7842c4a8f387df8eeb4bc51949fce799dde2db0d">Release 1.7.0.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/7842c4a8f387df8eeb4bc51949fce799dde2db0d">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/83b69571df4f07673f434e614301ed009e02ad98">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/tags/1.7.0">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log/refs/tags/1.7.0">log</a></td> +</tr><tr class="dark"> +<td><i>unknown</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/f2c6689859d5c79335535136ec1e0e01dbc779c7">1.6.1</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/tag/79369ddbd0896605c91f7431fbeb5fb62294cfc3"></a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/79369ddbd0896605c91f7431fbeb5fb62294cfc3">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/f2c6689859d5c79335535136ec1e0e01dbc779c7">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/tags/1.6.1">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log/refs/tags/1.6.1">log</a></td> +</tr><tr class="light"> +<td><i>unknown</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/mdwtools/commit/6c8117560625549a95d0a41985b2416e2c00cbb0">1.6.0</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/mdwtools/tag/15211ce34d0c3a60f1ee98746dd97fdd52e21b77"></a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/mdwtools/tag/15211ce34d0c3a60f1ee98746dd97fdd52e21b77">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/commit/6c8117560625549a95d0a41985b2416e2c00cbb0">commit</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/tags/1.6.0">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log/refs/tags/1.6.0">log</a></td> +</tr></table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/mdwtools/heads">heads</a> +</div> +<table class="heads"> +<tr class="dark"> +<td><i>7 weeks ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/heads/mdw/tangle">mdw/tangle</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/heads/mdw/tangle">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log/refs/heads/mdw/tangle">log</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/refs/heads/mdw/tangle">tree</a></td> +</tr><tr class="light"> +<td><i>3 years ago</i></td> +<td class="current_head"><a class="list name" href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/heads/master">master</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/mdwtools/shortlog/refs/heads/master">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/log/refs/heads/master">log</a> | <a href="https://git.distorted.org.uk/~mdw/mdwtools/tree/refs/heads/master">tree</a></td> +</tr></table> +<div class="page_footer"> +<div class="page_footer_text">Various LaTeX packages</div> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/mdwtools/rss" title="log RSS feed">RSS</a> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/mdwtools/atom" title="log Atom feed">Atom</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> \ No newline at end of file diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_scad b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_scad new file mode 100644 index 0000000000000000000000000000000000000000..af9c7dc5621ea7654a25a6598c4a0cd34dde64d4 --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_scad @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git - scad/summary</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="scad - log - RSS feed" href="https://git.distorted.org.uk/~mdw/scad/rss" type="application/rss+xml" /> +<link rel="alternate" title="scad - log - RSS feed (no merges)" href="https://git.distorted.org.uk/~mdw/scad/rss?opt=--no-merges" type="application/rss+xml" /> +<link rel="alternate" title="scad - log - Atom feed" href="https://git.distorted.org.uk/~mdw/scad/atom" type="application/atom+xml" /> +<link rel="alternate" title="scad - log - Atom feed (no merges)" href="https://git.distorted.org.uk/~mdw/scad/atom?opt=--no-merges" type="application/atom+xml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / <a href="https://git.distorted.org.uk/~mdw/scad">scad</a> / summary +</div> +<form method="get" action="https://git.distorted.org.uk/~mdw//scad" enctype="multipart/form-data"><div class="search"> +<input name="a" type="hidden" value="search" /> +<input name="h" type="hidden" value="HEAD" /> +<select name="st" > +<option selected="selected" value="commit">commit</option> +<option value="grep">grep</option> +<option value="author">author</option> +<option value="committer">committer</option> +<option value="pickaxe">pickaxe</option> +</select> <a href="https://git.distorted.org.uk/~mdw/scad/search_help" title="search help">?</a> search: +<input type="text" name="s" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span></div> +</form> +<div class="page_nav"> +summary | <a href="https://git.distorted.org.uk/~mdw/scad/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/scad/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/scad/commit/e05980e366e948132d10acde1abd0de29b6dae8a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/scad/commitdiff/e05980e366e948132d10acde1abd0de29b6dae8a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/scad/tree">tree</a><br/> +<br/> +</div> +<div class="title"> </div> +<table class="projects_list"> +<tr id="metadata_desc"><td>description</td><td>OpenSCAD models that I've designed.</td></tr> +<tr id="metadata_owner"><td>owner</td><td>Mark Wooding</td></tr> +<tr id="metadata_lchange"><td>last change</td><td><span class="datetime">Wed, 15 Mar 2023 00:57:55 +0000</span> (<span class="atnight">00:57</span> +0000)</td></tr> +<tr class="metadata_url"><td>URL</td><td>https://git.distorted.org.uk/~mdw/scad</td></tr> +<tr class="metadata_url"><td></td><td>git://git.distorted.org.uk/~mdw/scad</td></tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/scad/shortlog">shortlog</a> +</div> +<table class="shortlog"> +<tr class="dark"> +<td title="3 months ago"><i>2023-03-15</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/scad/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/scad/commit/e05980e366e948132d10acde1abd0de29b6dae8a" title="discpick-tensioner.scad: Improved tensioning component with longer prongs.">discpick-tensioner.scad: Improved tensioning component... </a> <span class="refs"> <span class="head" title="heads/master"><a href="https://git.distorted.org.uk/~mdw/scad/shortlog/refs/heads/master">master</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/scad/commit/e05980e366e948132d10acde1abd0de29b6dae8a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/scad/commitdiff/e05980e366e948132d10acde1abd0de29b6dae8a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/scad/tree/e05980e366e948132d10acde1abd0de29b6dae8a">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/scad/snapshot/e05980e366e948132d10acde1abd0de29b6dae8a.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/scad/snapshot/e05980e366e948132d10acde1abd0de29b6dae8a.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="8 months ago"><i>2022-10-28</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/scad/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/scad/commit/5f1872e84d2cb5198dfc6b9b6214ae7836cd9e4a">Add a build system.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/scad/commit/5f1872e84d2cb5198dfc6b9b6214ae7836cd9e4a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/scad/commitdiff/5f1872e84d2cb5198dfc6b9b6214ae7836cd9e4a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/scad/tree/5f1872e84d2cb5198dfc6b9b6214ae7836cd9e4a">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/scad/snapshot/5f1872e84d2cb5198dfc6b9b6214ae7836cd9e4a.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/scad/snapshot/5f1872e84d2cb5198dfc6b9b6214ae7836cd9e4a.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="9 months ago"><i>2022-09-30</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/scad/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/scad/commit/bfe485ff99b7430ceb074c89e2aa2f5bfd256b2a">discpick-collar.scad: Successful print.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/scad/commit/bfe485ff99b7430ceb074c89e2aa2f5bfd256b2a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/scad/commitdiff/bfe485ff99b7430ceb074c89e2aa2f5bfd256b2a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/scad/tree/bfe485ff99b7430ceb074c89e2aa2f5bfd256b2a">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/scad/snapshot/bfe485ff99b7430ceb074c89e2aa2f5bfd256b2a.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/scad/snapshot/bfe485ff99b7430ceb074c89e2aa2f5bfd256b2a.zip">zip</a>)</td> +</tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/scad/heads">heads</a> +</div> +<table class="heads"> +<tr class="dark"> +<td><i>3 months ago</i></td> +<td class="current_head"><a class="list name" href="https://git.distorted.org.uk/~mdw/scad/shortlog/refs/heads/master">master</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/scad/shortlog/refs/heads/master">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/scad/log/refs/heads/master">log</a> | <a href="https://git.distorted.org.uk/~mdw/scad/tree/refs/heads/master">tree</a></td> +</tr></table> +<div class="page_footer"> +<div class="page_footer_text">OpenSCAD models that I've designed.</div> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/scad/rss" title="log RSS feed">RSS</a> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/scad/atom" title="log Atom feed">Atom</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> \ No newline at end of file diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_strayman b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_strayman new file mode 100644 index 0000000000000000000000000000000000000000..f13ea8baee6a861cc7e7b2dc43ada5dc9be58d1e --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_strayman @@ -0,0 +1,210 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git - strayman/summary</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="strayman - log - RSS feed" href="https://git.distorted.org.uk/~mdw/strayman/rss" type="application/rss+xml" /> +<link rel="alternate" title="strayman - log - RSS feed (no merges)" href="https://git.distorted.org.uk/~mdw/strayman/rss?opt=--no-merges" type="application/rss+xml" /> +<link rel="alternate" title="strayman - log - Atom feed" href="https://git.distorted.org.uk/~mdw/strayman/atom" type="application/atom+xml" /> +<link rel="alternate" title="strayman - log - Atom feed (no merges)" href="https://git.distorted.org.uk/~mdw/strayman/atom?opt=--no-merges" type="application/atom+xml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / <a href="https://git.distorted.org.uk/~mdw/strayman">strayman</a> / summary +</div> +<form method="get" action="https://git.distorted.org.uk/~mdw//strayman" enctype="multipart/form-data"><div class="search"> +<input name="a" type="hidden" value="search" /> +<input name="h" type="hidden" value="HEAD" /> +<select name="st" > +<option selected="selected" value="commit">commit</option> +<option value="grep">grep</option> +<option value="author">author</option> +<option value="committer">committer</option> +<option value="pickaxe">pickaxe</option> +</select> <a href="https://git.distorted.org.uk/~mdw/strayman/search_help" title="search help">?</a> search: +<input type="text" name="s" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span></div> +</form> +<div class="page_nav"> +summary | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commit/aaa6f8c35e8cdbc5089abe865bf05e11dda958e6">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/aaa6f8c35e8cdbc5089abe865bf05e11dda958e6">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree">tree</a><br/> +<br/> +</div> +<div class="title"> </div> +<table class="projects_list"> +<tr id="metadata_desc"><td>description</td><td>LaTeX document class for various documents</td></tr> +<tr id="metadata_owner"><td>owner</td><td>Mark Wooding</td></tr> +<tr id="metadata_lchange"><td>last change</td><td><span class="datetime">Mon, 8 Jun 2020 16:00:49 +0000</span> (17:00 +0100)</td></tr> +<tr class="metadata_url"><td>URL</td><td>https://git.distorted.org.uk/~mdw/strayman</td></tr> +<tr class="metadata_url"><td></td><td>git://git.distorted.org.uk/~mdw/strayman</td></tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/strayman/shortlog">shortlog</a> +</div> +<table class="shortlog"> +<tr class="dark"> +<td title="3 years ago"><i>2020-06-08</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/aaa6f8c35e8cdbc5089abe865bf05e11dda958e6" title=".mdw-build.conf: Don't try `vpath' builds with this package.">.mdw-build.conf: Don't try `vpath' builds with this... </a> <span class="refs"> <span class="head" title="heads/master"><a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/heads/master">master</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/aaa6f8c35e8cdbc5089abe865bf05e11dda958e6">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/aaa6f8c35e8cdbc5089abe865bf05e11dda958e6">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/aaa6f8c35e8cdbc5089abe865bf05e11dda958e6">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/aaa6f8c35e8cdbc5089abe865bf05e11dda958e6.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/aaa6f8c35e8cdbc5089abe865bf05e11dda958e6.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="3 years ago"><i>2019-08-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/20d4967967cddbb26bdd155cf5e26cd2461724c5">Release 1.1.5.</a> <span class="refs"> <span class="tag indirect" title="tags/1.1.5"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/refs/tags/1.1.5">1.1.5</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/20d4967967cddbb26bdd155cf5e26cd2461724c5">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/20d4967967cddbb26bdd155cf5e26cd2461724c5">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/20d4967967cddbb26bdd155cf5e26cd2461724c5">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/20d4967967cddbb26bdd155cf5e26cd2461724c5.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/20d4967967cddbb26bdd155cf5e26cd2461724c5.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="3 years ago"><i>2019-08-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/54682c9b9affec159fb26c1cf23eb2ba3e0a1e53" title="debian/copyright: Switch to machine-readable copyright file.">debian/copyright: Switch to machine-readable copyright... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/54682c9b9affec159fb26c1cf23eb2ba3e0a1e53">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/54682c9b9affec159fb26c1cf23eb2ba3e0a1e53">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/54682c9b9affec159fb26c1cf23eb2ba3e0a1e53">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/54682c9b9affec159fb26c1cf23eb2ba3e0a1e53.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/54682c9b9affec159fb26c1cf23eb2ba3e0a1e53.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="3 years ago"><i>2019-08-24</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/2713c178e5a5445aff599f12a5a3f2c81bc1c5d1" title="strayman.dtx: Move left-side headers and footers into the margin.">strayman.dtx: Move left-side headers and footers into... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/2713c178e5a5445aff599f12a5a3f2c81bc1c5d1">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/2713c178e5a5445aff599f12a5a3f2c81bc1c5d1">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/2713c178e5a5445aff599f12a5a3f2c81bc1c5d1">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/2713c178e5a5445aff599f12a5a3f2c81bc1c5d1.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/2713c178e5a5445aff599f12a5a3f2c81bc1c5d1.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="3 years ago"><i>2019-08-07</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/580fe06e87e25a9d153540766a5f7c9dd33c9b37">Release 1.1.4.</a> <span class="refs"> <span class="tag indirect" title="tags/1.1.4"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/refs/tags/1.1.4">1.1.4</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/580fe06e87e25a9d153540766a5f7c9dd33c9b37">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/580fe06e87e25a9d153540766a5f7c9dd33c9b37">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/580fe06e87e25a9d153540766a5f7c9dd33c9b37">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/580fe06e87e25a9d153540766a5f7c9dd33c9b37.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/580fe06e87e25a9d153540766a5f7c9dd33c9b37.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="5 years ago"><i>2018-06-30</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/35f7eeda5f604a3a1272614f7c3634fe4459c76a" title="strayman.dtx: Forbid page breaks before lists attached to paragraphs.">strayman.dtx: Forbid page breaks before lists attached... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/35f7eeda5f604a3a1272614f7c3634fe4459c76a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/35f7eeda5f604a3a1272614f7c3634fe4459c76a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/35f7eeda5f604a3a1272614f7c3634fe4459c76a">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/35f7eeda5f604a3a1272614f7c3634fe4459c76a.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/35f7eeda5f604a3a1272614f7c3634fe4459c76a.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="5 years ago"><i>2018-06-22</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/e642ddb81feeb8056762575b02d26cb6efd9092f">Release 1.1.3.2.</a> <span class="refs"> <span class="tag indirect" title="tags/1.1.3.2"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/refs/tags/1.1.3.2">1.1.3.2</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/e642ddb81feeb8056762575b02d26cb6efd9092f">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/e642ddb81feeb8056762575b02d26cb6efd9092f">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/e642ddb81feeb8056762575b02d26cb6efd9092f">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/e642ddb81feeb8056762575b02d26cb6efd9092f.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/e642ddb81feeb8056762575b02d26cb6efd9092f.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="5 years ago"><i>2018-06-21</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/8a24a0f2daa29db373515002f0101df4fbac2154" title="debian/control: Add Build-Depends: ghostscript because `ps2pdf'.">debian/control: Add Build-Depends: ghostscript because... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/8a24a0f2daa29db373515002f0101df4fbac2154">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/8a24a0f2daa29db373515002f0101df4fbac2154">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/8a24a0f2daa29db373515002f0101df4fbac2154">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/8a24a0f2daa29db373515002f0101df4fbac2154.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/8a24a0f2daa29db373515002f0101df4fbac2154.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="5 years ago"><i>2018-06-21</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/9c3e8626aeeac67fcbdb629e930d5047b2d5946c" title="strayman.dtx (\part): Don't establish the label reference in a block.">strayman.dtx (\part): Don't establish the label referen... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/9c3e8626aeeac67fcbdb629e930d5047b2d5946c">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/9c3e8626aeeac67fcbdb629e930d5047b2d5946c">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/9c3e8626aeeac67fcbdb629e930d5047b2d5946c">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/9c3e8626aeeac67fcbdb629e930d5047b2d5946c.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/9c3e8626aeeac67fcbdb629e930d5047b2d5946c.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="7 years ago"><i>2016-05-05</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/fddb126af21406e22353db8a377b81a90244abe3">strayman.dtx: Whitespace fixes.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/fddb126af21406e22353db8a377b81a90244abe3">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/fddb126af21406e22353db8a377b81a90244abe3">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/fddb126af21406e22353db8a377b81a90244abe3">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/fddb126af21406e22353db8a377b81a90244abe3.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/fddb126af21406e22353db8a377b81a90244abe3.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="10 years ago"><i>2013-07-08</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/b40e3be3e44f20ca28cc17fc3fd23317e6ee9010" title="Actually arrange to distribute the Automake helper scripts.">Actually arrange to distribute the Automake helper... </a> <span class="refs"> <span class="tag indirect" title="tags/1.1.3.1"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/refs/tags/1.1.3.1">1.1.3.1</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/b40e3be3e44f20ca28cc17fc3fd23317e6ee9010">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/b40e3be3e44f20ca28cc17fc3fd23317e6ee9010">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/b40e3be3e44f20ca28cc17fc3fd23317e6ee9010">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/b40e3be3e44f20ca28cc17fc3fd23317e6ee9010.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/b40e3be3e44f20ca28cc17fc3fd23317e6ee9010.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="10 years ago"><i>2013-07-08</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/0ff6fe0fad5462b75328fc3da0b074a5aeba4042">.gitignore: Ignore `auto-version' script.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/0ff6fe0fad5462b75328fc3da0b074a5aeba4042">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/0ff6fe0fad5462b75328fc3da0b074a5aeba4042">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/0ff6fe0fad5462b75328fc3da0b074a5aeba4042">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/0ff6fe0fad5462b75328fc3da0b074a5aeba4042.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/0ff6fe0fad5462b75328fc3da0b074a5aeba4042.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="11 years ago"><i>2012-05-05</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/a9e5961e0f27bf6e61fea17a1ff1042a3b7ff59d">Debianization!</a> <span class="refs"> <span class="tag indirect" title="tags/1.1.3"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/refs/tags/1.1.3">1.1.3</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/a9e5961e0f27bf6e61fea17a1ff1042a3b7ff59d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/a9e5961e0f27bf6e61fea17a1ff1042a3b7ff59d">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/a9e5961e0f27bf6e61fea17a1ff1042a3b7ff59d">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/a9e5961e0f27bf6e61fea17a1ff1042a3b7ff59d.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/a9e5961e0f27bf6e61fea17a1ff1042a3b7ff59d.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="11 years ago"><i>2012-04-10</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/36bc1cc40c76ec8e66ec72b6d18d041593cdda50">Build: version from Git.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/36bc1cc40c76ec8e66ec72b6d18d041593cdda50">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/36bc1cc40c76ec8e66ec72b6d18d041593cdda50">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/36bc1cc40c76ec8e66ec72b6d18d041593cdda50">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/36bc1cc40c76ec8e66ec72b6d18d041593cdda50.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/36bc1cc40c76ec8e66ec72b6d18d041593cdda50.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="11 years ago"><i>2012-04-10</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/deee9d1ff95901da3da1a8ce81b33126f2832175">Whitespace fixups.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/deee9d1ff95901da3da1a8ce81b33126f2832175">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/deee9d1ff95901da3da1a8ce81b33126f2832175">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/deee9d1ff95901da3da1a8ce81b33126f2832175">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/deee9d1ff95901da3da1a8ce81b33126f2832175.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/deee9d1ff95901da3da1a8ce81b33126f2832175.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="11 years ago"><i>2012-04-10</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/strayman/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/commit/e673b6d13629fcf620a440c13de6e6f2da44df1d">Generate Postscript and PDF versions of documents.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/commit/e673b6d13629fcf620a440c13de6e6f2da44df1d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/commitdiff/e673b6d13629fcf620a440c13de6e6f2da44df1d">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/e673b6d13629fcf620a440c13de6e6f2da44df1d">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/e673b6d13629fcf620a440c13de6e6f2da44df1d.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/strayman/snapshot/e673b6d13629fcf620a440c13de6e6f2da44df1d.zip">zip</a>)</td> +</tr> +<tr> +<td colspan="4"><a href="https://git.distorted.org.uk/~mdw/strayman/shortlog">...</a></td> +</tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/strayman/tags">tags</a> +</div> +<table class="tags"> +<tr class="dark"> +<td><i>3 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/commit/20d4967967cddbb26bdd155cf5e26cd2461724c5">1.1.5</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/tag/353b9d290e55ab09137ae658278b6eebc5844921">Release 1.1.5.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/353b9d290e55ab09137ae658278b6eebc5844921">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/strayman/commit/20d4967967cddbb26bdd155cf5e26cd2461724c5">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/tags/1.1.5">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/tags/1.1.5">log</a></td> +</tr><tr class="light"> +<td><i>3 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/commit/580fe06e87e25a9d153540766a5f7c9dd33c9b37">1.1.4</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/tag/e25f20c1b7ce406c35b172bbd630b05b93bc8bae">Release 1.1.4.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/e25f20c1b7ce406c35b172bbd630b05b93bc8bae">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/strayman/commit/580fe06e87e25a9d153540766a5f7c9dd33c9b37">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/tags/1.1.4">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/tags/1.1.4">log</a></td> +</tr><tr class="dark"> +<td><i>5 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/commit/e642ddb81feeb8056762575b02d26cb6efd9092f">1.1.3.2</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/tag/b667ed3792b2ec77da597cf38681715c578bd115">Release 1.1.3.2.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/b667ed3792b2ec77da597cf38681715c578bd115">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/strayman/commit/e642ddb81feeb8056762575b02d26cb6efd9092f">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/tags/1.1.3.2">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/tags/1.1.3.2">log</a></td> +</tr><tr class="light"> +<td><i>10 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/commit/b40e3be3e44f20ca28cc17fc3fd23317e6ee9010">1.1.3.1</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/tag/aa4b45f1f7b0c8024310a175c3b655e910907c4c">Release 1.1.3.1.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/aa4b45f1f7b0c8024310a175c3b655e910907c4c">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/strayman/commit/b40e3be3e44f20ca28cc17fc3fd23317e6ee9010">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/tags/1.1.3.1">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/tags/1.1.3.1">log</a></td> +</tr><tr class="dark"> +<td><i>11 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/commit/a9e5961e0f27bf6e61fea17a1ff1042a3b7ff59d">1.1.3</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/tag/fb121d1290acb22cfb500560f11a37608a6acddd">Release 1.1.3.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/fb121d1290acb22cfb500560f11a37608a6acddd">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/strayman/commit/a9e5961e0f27bf6e61fea17a1ff1042a3b7ff59d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/tags/1.1.3">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/tags/1.1.3">log</a></td> +</tr><tr class="light"> +<td><i>11 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/commit/c3f26ad36fea70261b3a2d594cd47e4b0bb05415">1.1.2</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/tag/f2920f8233dce0415e8c5dc079c3434d1e06ed6b">Release 1.1.2.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/f2920f8233dce0415e8c5dc079c3434d1e06ed6b">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/strayman/commit/c3f26ad36fea70261b3a2d594cd47e4b0bb05415">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/tags/1.1.2">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/tags/1.1.2">log</a></td> +</tr><tr class="dark"> +<td><i>11 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/commit/1ffa90443b7d571c1d2af00626db04dea063302d">1.1.0</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/strayman/tag/e888e9d01ce67f09daa9ff06cf04161816c32002">Release 1.1.0.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/strayman/tag/e888e9d01ce67f09daa9ff06cf04161816c32002">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/strayman/commit/1ffa90443b7d571c1d2af00626db04dea063302d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/tags/1.1.0">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/tags/1.1.0">log</a></td> +</tr></table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/strayman/heads">heads</a> +</div> +<table class="heads"> +<tr class="dark"> +<td><i>2 months ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/heads/mdw/tangle">mdw/tangle</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/heads/mdw/tangle">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/heads/mdw/tangle">log</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/refs/heads/mdw/tangle">tree</a></td> +</tr><tr class="light"> +<td><i>3 years ago</i></td> +<td class="current_head"><a class="list name" href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/heads/master">master</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/strayman/shortlog/refs/heads/master">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/log/refs/heads/master">log</a> | <a href="https://git.distorted.org.uk/~mdw/strayman/tree/refs/heads/master">tree</a></td> +</tr></table> +<div class="page_footer"> +<div class="page_footer_text">LaTeX document class for various documents</div> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/strayman/rss" title="log RSS feed">RSS</a> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/strayman/atom" title="log Atom feed">Atom</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> \ No newline at end of file diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_udpkey b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_udpkey new file mode 100644 index 0000000000000000000000000000000000000000..f4524e5a1e6513b02fc72bf2406760279acae58a --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_udpkey @@ -0,0 +1,190 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git - udpkey/summary</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="udpkey - log - RSS feed" href="https://git.distorted.org.uk/~mdw/udpkey/rss" type="application/rss+xml" /> +<link rel="alternate" title="udpkey - log - RSS feed (no merges)" href="https://git.distorted.org.uk/~mdw/udpkey/rss?opt=--no-merges" type="application/rss+xml" /> +<link rel="alternate" title="udpkey - log - Atom feed" href="https://git.distorted.org.uk/~mdw/udpkey/atom" type="application/atom+xml" /> +<link rel="alternate" title="udpkey - log - Atom feed (no merges)" href="https://git.distorted.org.uk/~mdw/udpkey/atom?opt=--no-merges" type="application/atom+xml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / <a href="https://git.distorted.org.uk/~mdw/udpkey">udpkey</a> / summary +</div> +<form method="get" action="https://git.distorted.org.uk/~mdw//udpkey" enctype="multipart/form-data"><div class="search"> +<input name="a" type="hidden" value="search" /> +<input name="h" type="hidden" value="HEAD" /> +<select name="st" > +<option selected="selected" value="commit">commit</option> +<option value="grep">grep</option> +<option value="author">author</option> +<option value="committer">committer</option> +<option value="pickaxe">pickaxe</option> +</select> <a href="https://git.distorted.org.uk/~mdw/udpkey/search_help" title="search help">?</a> search: +<input type="text" name="s" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span></div> +</form> +<div class="page_nav"> +summary | <a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commit/266e54e16bdab10461daa17e754acfedf669d05a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/266e54e16bdab10461daa17e754acfedf669d05a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree">tree</a><br/> +<br/> +</div> +<div class="title"> </div> +<table class="projects_list"> +<tr id="metadata_desc"><td>description</td><td>Transmit and receive cryptographic keys over UDP; useful during boot.</td></tr> +<tr id="metadata_owner"><td>owner</td><td>Mark Wooding</td></tr> +<tr id="metadata_lchange"><td>last change</td><td><span class="datetime">Thu, 18 Feb 2016 17:53:27 +0000</span> (17:53 +0000)</td></tr> +<tr class="metadata_url"><td>URL</td><td>https://git.distorted.org.uk/~mdw/udpkey</td></tr> +<tr class="metadata_url"><td></td><td>git://git.distorted.org.uk/~mdw/udpkey</td></tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/udpkey/shortlog">shortlog</a> +</div> +<table class="shortlog"> +<tr class="dark"> +<td title="7 years ago"><i>2016-02-18</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/266e54e16bdab10461daa17e754acfedf669d05a">Release 1.0.2.</a> <span class="refs"> <span class="head" title="heads/master"><a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/heads/master">master</a></span> <span class="tag indirect" title="tags/1.0.2"><a href="https://git.distorted.org.uk/~mdw/udpkey/tag/refs/tags/1.0.2">1.0.2</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/266e54e16bdab10461daa17e754acfedf669d05a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/266e54e16bdab10461daa17e754acfedf669d05a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/266e54e16bdab10461daa17e754acfedf669d05a">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/266e54e16bdab10461daa17e754acfedf669d05a.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/266e54e16bdab10461daa17e754acfedf669d05a.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="7 years ago"><i>2016-02-18</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/5c7e9df83788dcb1f8f57d88ce0a945fe44b4ca0">debian/control: Fix the Build-Depends.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/5c7e9df83788dcb1f8f57d88ce0a945fe44b4ca0">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/5c7e9df83788dcb1f8f57d88ce0a945fe44b4ca0">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/5c7e9df83788dcb1f8f57d88ce0a945fe44b4ca0">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/5c7e9df83788dcb1f8f57d88ce0a945fe44b4ca0.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/5c7e9df83788dcb1f8f57d88ce0a945fe44b4ca0.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="7 years ago"><i>2016-02-18</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/413e4264e7164a7474b4affa71c487b6ccc474a8" title="debian/source/format: Apparently I'm meant to have one of these.">debian/source/format: Apparently I'm meant to have... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/413e4264e7164a7474b4affa71c487b6ccc474a8">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/413e4264e7164a7474b4affa71c487b6ccc474a8">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/413e4264e7164a7474b4affa71c487b6ccc474a8">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/413e4264e7164a7474b4affa71c487b6ccc474a8.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/413e4264e7164a7474b4affa71c487b6ccc474a8.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/c33ded254b17ed0b7871ec8ef08ddf447df08952">udpkey.c: Fix typos in commentary.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/c33ded254b17ed0b7871ec8ef08ddf447df08952">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/c33ded254b17ed0b7871ec8ef08ddf447df08952">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/c33ded254b17ed0b7871ec8ef08ddf447df08952">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/c33ded254b17ed0b7871ec8ef08ddf447df08952.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/c33ded254b17ed0b7871ec8ef08ddf447df08952.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/cb4edb9f61ee8a2b6b8a89f1069fec6d5a771c70" title="udpkey.1: Prepend a line telling man(1)'s that it should call eqn(1).">udpkey.1: Prepend a line telling man(1)'s that it shoul... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/cb4edb9f61ee8a2b6b8a89f1069fec6d5a771c70">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/cb4edb9f61ee8a2b6b8a89f1069fec6d5a771c70">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/cb4edb9f61ee8a2b6b8a89f1069fec6d5a771c70">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/cb4edb9f61ee8a2b6b8a89f1069fec6d5a771c70.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/cb4edb9f61ee8a2b6b8a89f1069fec6d5a771c70.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/336b3767c33f397e1db883fc220c607ecb2d9e8d">udpkey.1: Fix misformatting in a syntax display.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/336b3767c33f397e1db883fc220c607ecb2d9e8d">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/336b3767c33f397e1db883fc220c607ecb2d9e8d">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/336b3767c33f397e1db883fc220c607ecb2d9e8d">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/336b3767c33f397e1db883fc220c607ecb2d9e8d.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/336b3767c33f397e1db883fc220c607ecb2d9e8d.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/b5491aaa8978c7adc42c7f758ddbed6263c67e3a">Release 1.0.1.</a> <span class="refs"> <span class="tag indirect" title="tags/1.0.1"><a href="https://git.distorted.org.uk/~mdw/udpkey/tag/refs/tags/1.0.1">1.0.1</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/b5491aaa8978c7adc42c7f758ddbed6263c67e3a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/b5491aaa8978c7adc42c7f758ddbed6263c67e3a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/b5491aaa8978c7adc42c7f758ddbed6263c67e3a">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/b5491aaa8978c7adc42c7f758ddbed6263c67e3a.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/b5491aaa8978c7adc42c7f758ddbed6263c67e3a.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/37b2b8ac141b664344365678b1606232cad3af25" title="debian/udpkey.keyscript: Don't send network setup chatter as key.">debian/udpkey.keyscript: Don't send network setup chatt... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/37b2b8ac141b664344365678b1606232cad3af25">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/37b2b8ac141b664344365678b1606232cad3af25">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/37b2b8ac141b664344365678b1606232cad3af25">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/37b2b8ac141b664344365678b1606232cad3af25.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/37b2b8ac141b664344365678b1606232cad3af25.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/f3d1f95d4aed8e1cd02046650c17dd7a7bdbd952" title="debian/udpkey.initramfs-hook: Ensure seed is not publicly readable.">debian/udpkey.initramfs-hook: Ensure seed is not public... </a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/f3d1f95d4aed8e1cd02046650c17dd7a7bdbd952">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/f3d1f95d4aed8e1cd02046650c17dd7a7bdbd952">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/f3d1f95d4aed8e1cd02046650c17dd7a7bdbd952">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/f3d1f95d4aed8e1cd02046650c17dd7a7bdbd952.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/f3d1f95d4aed8e1cd02046650c17dd7a7bdbd952.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/cfec381392ae1a5fb4ac0ffc010e3bc9154889c0">Makefile.am: Distribute the extra Debian files.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/cfec381392ae1a5fb4ac0ffc010e3bc9154889c0">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/cfec381392ae1a5fb4ac0ffc010e3bc9154889c0">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/cfec381392ae1a5fb4ac0ffc010e3bc9154889c0">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/cfec381392ae1a5fb4ac0ffc010e3bc9154889c0.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/cfec381392ae1a5fb4ac0ffc010e3bc9154889c0.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/92469bdf40b72f8faa63cb5fd7abcadcc663c110">Annotate `printf'-like functions for better warnings.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/92469bdf40b72f8faa63cb5fd7abcadcc663c110">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/92469bdf40b72f8faa63cb5fd7abcadcc663c110">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/92469bdf40b72f8faa63cb5fd7abcadcc663c110">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/92469bdf40b72f8faa63cb5fd7abcadcc663c110.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/92469bdf40b72f8faa63cb5fd7abcadcc663c110.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/a2fd0b74b87c7d838333e331f4c76c5de8f958dc">udpkey.c: Missing newline in version string.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/a2fd0b74b87c7d838333e331f4c76c5de8f958dc">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/a2fd0b74b87c7d838333e331f4c76c5de8f958dc">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/a2fd0b74b87c7d838333e331f4c76c5de8f958dc">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/a2fd0b74b87c7d838333e331f4c76c5de8f958dc.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/a2fd0b74b87c7d838333e331f4c76c5de8f958dc.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/a5f873bee5d69f4f12160360ec9a756b7c1c907a">Use constant-time comparison for checking MAC tags.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/a5f873bee5d69f4f12160360ec9a756b7c1c907a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/a5f873bee5d69f4f12160360ec9a756b7c1c907a">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/a5f873bee5d69f4f12160360ec9a756b7c1c907a">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/a5f873bee5d69f4f12160360ec9a756b7c1c907a.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/a5f873bee5d69f4f12160360ec9a756b7c1c907a.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/46716e8f42305a5b622274ebe53bad13d3f54bab">udpkey.c: Fix format-string error.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/46716e8f42305a5b622274ebe53bad13d3f54bab">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/46716e8f42305a5b622274ebe53bad13d3f54bab">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/46716e8f42305a5b622274ebe53bad13d3f54bab">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/46716e8f42305a5b622274ebe53bad13d3f54bab.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/46716e8f42305a5b622274ebe53bad13d3f54bab.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="10 years ago"><i>2013-06-29</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/d07ca53230ccef4664ec4130f41463a54c694488">udpkey.1: Some more tweaks to the manpage.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/d07ca53230ccef4664ec4130f41463a54c694488">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/d07ca53230ccef4664ec4130f41463a54c694488">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/d07ca53230ccef4664ec4130f41463a54c694488">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/d07ca53230ccef4664ec4130f41463a54c694488.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/d07ca53230ccef4664ec4130f41463a54c694488.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="10 years ago"><i>2013-06-28</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/udpkey/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/commit/4adfd9ca68db08bc025ea8b973c492f2175b2673">.gitignore: Ignore the `autom4te.cache' directory.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/commit/4adfd9ca68db08bc025ea8b973c492f2175b2673">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commitdiff/4adfd9ca68db08bc025ea8b973c492f2175b2673">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/4adfd9ca68db08bc025ea8b973c492f2175b2673">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/4adfd9ca68db08bc025ea8b973c492f2175b2673.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/udpkey/snapshot/4adfd9ca68db08bc025ea8b973c492f2175b2673.zip">zip</a>)</td> +</tr> +<tr> +<td colspan="4"><a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog">...</a></td> +</tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/udpkey/tags">tags</a> +</div> +<table class="tags"> +<tr class="dark"> +<td><i>7 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/udpkey/commit/266e54e16bdab10461daa17e754acfedf669d05a">1.0.2</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/tag/5b7c3af6e7b6398744d0975b17565db51c25617f">Release 1.0.2.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/udpkey/tag/5b7c3af6e7b6398744d0975b17565db51c25617f">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commit/266e54e16bdab10461daa17e754acfedf669d05a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/tags/1.0.2">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log/refs/tags/1.0.2">log</a></td> +</tr><tr class="light"> +<td><i>10 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/udpkey/commit/b5491aaa8978c7adc42c7f758ddbed6263c67e3a">1.0.1</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/tag/334a8821ad53204cb0671a789342ca1a6835f05d">Release 1.0.1.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/udpkey/tag/334a8821ad53204cb0671a789342ca1a6835f05d">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commit/b5491aaa8978c7adc42c7f758ddbed6263c67e3a">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/tags/1.0.1">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log/refs/tags/1.0.1">log</a></td> +</tr><tr class="dark"> +<td><i>10 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/udpkey/commit/247f344ab1dcb88890b92fd96258f8872f76acf8">1.0.0</a></td> +<td><a class="list subject" href="https://git.distorted.org.uk/~mdw/udpkey/tag/8825ebf8d2a4b8deb8d3f2a9206a319b2437bd52">Release 1.0.0.</a></td> +<td class="selflink"><a href="https://git.distorted.org.uk/~mdw/udpkey/tag/8825ebf8d2a4b8deb8d3f2a9206a319b2437bd52">tag</a></td> +<td class="link"> | <a href="https://git.distorted.org.uk/~mdw/udpkey/commit/247f344ab1dcb88890b92fd96258f8872f76acf8">commit</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/tags/1.0.0">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log/refs/tags/1.0.0">log</a></td> +</tr></table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/udpkey/heads">heads</a> +</div> +<table class="heads"> +<tr class="dark"> +<td><i>7 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/heads/mdw/wip.crybaby.2016-05-05">mdw/wip.crybaby.2016-05-05</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/heads/mdw/wip.crybaby.2016-05-05">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log/refs/heads/mdw/wip.crybaby.2016-05-05">log</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/refs/heads/mdw/wip.crybaby.2016-05-05">tree</a></td> +</tr><tr class="light"> +<td><i>7 years ago</i></td> +<td class="current_head"><a class="list name" href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/heads/master">master</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/heads/master">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log/refs/heads/master">log</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/refs/heads/master">tree</a></td> +</tr><tr class="dark"> +<td><i>9 years ago</i></td> +<td><a class="list name" href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/heads/mdw/fwd-sec">mdw/fwd-sec</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/udpkey/shortlog/refs/heads/mdw/fwd-sec">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/log/refs/heads/mdw/fwd-sec">log</a> | <a href="https://git.distorted.org.uk/~mdw/udpkey/tree/refs/heads/mdw/fwd-sec">tree</a></td> +</tr></table> +<div class="page_footer"> +<div class="page_footer_text">Transmit and receive cryptographic keys over UDP; useful during boot.</div> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/udpkey/rss" title="log RSS feed">RSS</a> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/udpkey/atom" title="log Atom feed">Atom</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> \ No newline at end of file diff --git a/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_vmctl b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_vmctl new file mode 100644 index 0000000000000000000000000000000000000000..2a18416370dcc4730d464e684d124e55805a4d90 --- /dev/null +++ b/swh/lister/gitweb/tests/data/https_git.distorted.org.uk/~mdw_vmctl @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> +<!-- git web interface version 2.11.0, (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>, Christian Gierke --> +<!-- git core binaries version 2.11.0 --> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"/> +<meta name="generator" content="gitweb/2.11.0 git/2.11.0"/> +<meta name="robots" content="index, nofollow"/> +<title>mdw@git.distorted.org.uk Git - vmctl/summary</title> +<base href="https://git.distorted.org.uk" /> +<link rel="stylesheet" type="text/css" href="/gitweb/gitweb.css"/> +<link rel="stylesheet" type="text/css" href="/local/gitweb.css"/> +<link rel="alternate" title="vmctl - log - RSS feed" href="https://git.distorted.org.uk/~mdw/vmctl/rss" type="application/rss+xml" /> +<link rel="alternate" title="vmctl - log - RSS feed (no merges)" href="https://git.distorted.org.uk/~mdw/vmctl/rss?opt=--no-merges" type="application/rss+xml" /> +<link rel="alternate" title="vmctl - log - Atom feed" href="https://git.distorted.org.uk/~mdw/vmctl/atom" type="application/atom+xml" /> +<link rel="alternate" title="vmctl - log - Atom feed (no merges)" href="https://git.distorted.org.uk/~mdw/vmctl/atom?opt=--no-merges" type="application/atom+xml" /> +<link rel="shortcut icon" href="/gitweb/git-favicon.png" type="image/png" /> +</head> +<body> +<div class="page_header"> +<a href="http://git-scm.com/" title="git homepage"><img alt="git" class="logo" height="27" src="/gitweb/git-logo.png" width="72" /></a><a href="/~mdw/">~mdw</a> / <a href="https://git.distorted.org.uk/~mdw/vmctl">vmctl</a> / summary +</div> +<form method="get" action="https://git.distorted.org.uk/~mdw//vmctl" enctype="multipart/form-data"><div class="search"> +<input name="a" type="hidden" value="search" /> +<input name="h" type="hidden" value="HEAD" /> +<select name="st" > +<option selected="selected" value="commit">commit</option> +<option value="grep">grep</option> +<option value="author">author</option> +<option value="committer">committer</option> +<option value="pickaxe">pickaxe</option> +</select> <a href="https://git.distorted.org.uk/~mdw/vmctl/search_help" title="search help">?</a> search: +<input type="text" name="s" /> +<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span></div> +</form> +<div class="page_nav"> +summary | <a href="https://git.distorted.org.uk/~mdw/vmctl/shortlog">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/log">log</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/commit/95ec7b4d9cb014f12349fc193684baab0903fbf7">commit</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/commitdiff/95ec7b4d9cb014f12349fc193684baab0903fbf7">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/tree">tree</a><br/> +<br/> +</div> +<div class="title"> </div> +<table class="projects_list"> +<tr id="metadata_desc"><td>description</td><td>Constrained VM management, via SSH.</td></tr> +<tr id="metadata_owner"><td>owner</td><td>Mark Wooding</td></tr> +<tr id="metadata_lchange"><td>last change</td><td><span class="datetime">Sat, 4 Apr 2015 12:36:59 +0000</span> (13:36 +0100)</td></tr> +<tr class="metadata_url"><td>URL</td><td>https://git.distorted.org.uk/~mdw/vmctl</td></tr> +<tr class="metadata_url"><td></td><td>git://git.distorted.org.uk/~mdw/vmctl</td></tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/vmctl/shortlog">shortlog</a> +</div> +<table class="shortlog"> +<tr class="dark"> +<td title="8 years ago"><i>2015-04-04</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/vmctl/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/vmctl/commit/95ec7b4d9cb014f12349fc193684baab0903fbf7">.ssh/Makefile: Add dependency on sshsvc.conf.</a> <span class="refs"> <span class="head" title="heads/master"><a href="https://git.distorted.org.uk/~mdw/vmctl/shortlog/refs/heads/master">master</a></span></span></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/vmctl/commit/95ec7b4d9cb014f12349fc193684baab0903fbf7">commit</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/commitdiff/95ec7b4d9cb014f12349fc193684baab0903fbf7">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/tree/95ec7b4d9cb014f12349fc193684baab0903fbf7">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/vmctl/snapshot/95ec7b4d9cb014f12349fc193684baab0903fbf7.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/vmctl/snapshot/95ec7b4d9cb014f12349fc193684baab0903fbf7.zip">zip</a>)</td> +</tr> +<tr class="light"> +<td title="9 years ago"><i>2013-09-03</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/vmctl/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/vmctl/commit/1724d7d6ca67cc3c484db19e23b3e27fa64bb3a5">.ssh: Generate the awful authorized_keys file.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/vmctl/commit/1724d7d6ca67cc3c484db19e23b3e27fa64bb3a5">commit</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/commitdiff/1724d7d6ca67cc3c484db19e23b3e27fa64bb3a5">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/tree/1724d7d6ca67cc3c484db19e23b3e27fa64bb3a5">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/vmctl/snapshot/1724d7d6ca67cc3c484db19e23b3e27fa64bb3a5.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/vmctl/snapshot/1724d7d6ca67cc3c484db19e23b3e27fa64bb3a5.zip">zip</a>)</td> +</tr> +<tr class="dark"> +<td title="10 years ago"><i>2012-08-26</i></td> +<td class="author"><a class="list" href="https://git.distorted.org.uk/~mdw/vmctl/search?s=Mark+Wooding;st=author" title="Search for commits authored by Mark Wooding">Mark Wooding</a></td><td><a class="list subject" href="https://git.distorted.org.uk/~mdw/vmctl/commit/da13c8714dc32c5d493952b38825d3ad58e38635">Initial version.</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/vmctl/commit/da13c8714dc32c5d493952b38825d3ad58e38635">commit</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/commitdiff/da13c8714dc32c5d493952b38825d3ad58e38635">commitdiff</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/tree/da13c8714dc32c5d493952b38825d3ad58e38635">tree</a> | snapshot (<a href="https://git.distorted.org.uk/~mdw/vmctl/snapshot/da13c8714dc32c5d493952b38825d3ad58e38635.tar.gz">tar.gz</a> <a href="https://git.distorted.org.uk/~mdw/vmctl/snapshot/da13c8714dc32c5d493952b38825d3ad58e38635.zip">zip</a>)</td> +</tr> +</table> +<div class="header"> +<a class="title" href="https://git.distorted.org.uk/~mdw/vmctl/heads">heads</a> +</div> +<table class="heads"> +<tr class="dark"> +<td><i>8 years ago</i></td> +<td class="current_head"><a class="list name" href="https://git.distorted.org.uk/~mdw/vmctl/shortlog/refs/heads/master">master</a></td> +<td class="link"><a href="https://git.distorted.org.uk/~mdw/vmctl/shortlog/refs/heads/master">shortlog</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/log/refs/heads/master">log</a> | <a href="https://git.distorted.org.uk/~mdw/vmctl/tree/refs/heads/master">tree</a></td> +</tr></table> +<div class="page_footer"> +<div class="page_footer_text">Constrained VM management, via SSH.</div> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/vmctl/rss" title="log RSS feed">RSS</a> +<a class="rss_logo" href="https://git.distorted.org.uk/~mdw/vmctl/atom" title="log Atom feed">Atom</a> +</div> +<script type="text/javascript" src="/gitweb/gitweb.js"></script> +<script type="text/javascript"> +window.onload = function () { + var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' }; + onloadTZSetup('local', tz_cookie, 'datetime'); +}; +</script> +</body> +</html> \ No newline at end of file diff --git a/swh/lister/gitweb/tests/test_lister.py b/swh/lister/gitweb/tests/test_lister.py new file mode 100644 index 0000000000000000000000000000000000000000..1f784b1c90a8895235fc06dd5dc59a0f494cd6c9 --- /dev/null +++ b/swh/lister/gitweb/tests/test_lister.py @@ -0,0 +1,120 @@ +# Copyright (C) 2023 The Software Heritage developers +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +import os +from typing import List + +import pytest + +from swh.lister import __version__ +from swh.lister.gitweb.lister import GitwebLister +from swh.lister.pattern import ListerStats + +MAIN_INSTANCE = "git.distorted.org.uk" +MAIN_INSTANCE_URL = f"https://{MAIN_INSTANCE}/~mdw" + + +def test_lister_gitweb_instantiate(swh_scheduler): + """Build a lister with either an url or an instance is supported.""" + url = MAIN_INSTANCE_URL + lister = GitwebLister(swh_scheduler, url=url) + assert lister is not None + assert lister.url == url + + assert GitwebLister(swh_scheduler, instance=MAIN_INSTANCE) is not None + assert lister is not None + assert lister.url == url + + +def test_lister_gitweb_fail_to_instantiate(swh_scheduler): + """Build a lister without its url nor its instance should raise""" + # ... It will raise without any of those + with pytest.raises(ValueError, match="'url' or 'instance'"): + GitwebLister(swh_scheduler) + + +def test_lister_gitweb_get_pages(requests_mock_datadir, swh_scheduler): + """Computing the number of pages scrapped during a listing.""" + url = MAIN_INSTANCE_URL + lister_gitweb = GitwebLister(swh_scheduler, url=url) + + expected_nb_origins = 7 + + repos: List[List[str]] = list(lister_gitweb.get_pages()) + flattened_repos = sum(repos, []) + assert len(flattened_repos) == expected_nb_origins + + for listed_url in flattened_repos: + assert listed_url["url"].startswith(url) + + +def test_lister_gitweb_run(requests_mock_datadir, swh_scheduler): + """Gitweb lister nominal listing case.""" + + url = MAIN_INSTANCE_URL + lister_gitweb = GitwebLister(swh_scheduler, url=url) + + stats = lister_gitweb.run() + + expected_nb_origins = 7 # main page will get filtered out + assert stats == ListerStats(pages=1, origins=expected_nb_origins) + + # test page parsing + scheduler_origins = swh_scheduler.get_listed_origins( + lister_gitweb.lister_obj.id + ).results + assert len(scheduler_origins) == expected_nb_origins + + # test listed repositories + for listed_origin in scheduler_origins: + assert listed_origin.visit_type == "git" + assert listed_origin.url.startswith(url) + # Not parsed + assert listed_origin.last_update is None + + # test user agent content + for request in requests_mock_datadir.request_history: + assert "User-Agent" in request.headers + user_agent = request.headers["User-Agent"] + assert "Software Heritage gitweb lister" in user_agent + assert __version__ in user_agent + + +def test_lister_gitweb_get_pages_with_pages_and_retry( + requests_mock_datadir, requests_mock, datadir, mocker, swh_scheduler +): + """Rate limited page are tested back after some time so ingestion can proceed.""" + url = MAIN_INSTANCE_URL + with open(os.path.join(datadir, f"https_{MAIN_INSTANCE}/~mdw"), "rb") as page: + requests_mock.get( + url, + [ + {"content": None, "status_code": 429}, + {"content": None, "status_code": 429}, + {"content": page.read(), "status_code": 200}, + ], + ) + + lister_gitweb = GitwebLister(swh_scheduler, url=url) + + mocker.patch.object(lister_gitweb.http_request.retry, "sleep") + + pages: List[List[str]] = list(lister_gitweb.get_pages()) + flattened_repos = sum(pages, []) + assert len(pages) == 1 + assert len(flattened_repos) == 7 + + +def test_lister_gitweb_get_origin_from_repo_failing( + swh_scheduler, requests_mock_datadir +): + """Instances whose summary does not return anything are filtered out.""" + # This instance has some more origins which no longer returns their summary + lister_gitweb = GitwebLister(swh_scheduler, url=f"https://{MAIN_INSTANCE}/foobar") + + stats = lister_gitweb.run() + + # so they are filtered out, only the 7 we know are thus listed + expected_nb_origins = 7 + assert stats == ListerStats(pages=1, origins=expected_nb_origins) diff --git a/swh/lister/gitweb/tests/test_tasks.py b/swh/lister/gitweb/tests/test_tasks.py new file mode 100644 index 0000000000000000000000000000000000000000..1e5cc3436fd1d42eabeee2294ceb832f2c2f1308 --- /dev/null +++ b/swh/lister/gitweb/tests/test_tasks.py @@ -0,0 +1,30 @@ +# Copyright (C) 2023 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +from swh.lister.pattern import ListerStats + + +def test_gitweb_lister_task( + swh_scheduler_celery_app, swh_scheduler_celery_worker, mocker +): + # setup the mocked GitwebLister + lister = mocker.patch("swh.lister.gitweb.tasks.GitwebLister") + lister.from_configfile.return_value = lister + lister.run.return_value = ListerStats(pages=10, origins=500) + + kwargs = dict( + url="https://git.gentoo.org/", instance="kernel", base_git_url=None, max_pages=1 + ) + + res = swh_scheduler_celery_app.send_task( + "swh.lister.gitweb.tasks.GitwebListerTask", + kwargs=kwargs, + ) + assert res + res.wait() + assert res.successful() + + lister.from_configfile.assert_called_once_with(**kwargs) + lister.run.assert_called_once_with() diff --git a/swh/lister/tests/test_cli.py b/swh/lister/tests/test_cli.py index 19411c99c599b93d68079fb13f95e02f3a4d81a2..29a9a01baf19e83ab18ec22f623a60c56e4fdc44 100644 --- a/swh/lister/tests/test_cli.py +++ b/swh/lister/tests/test_cli.py @@ -42,6 +42,9 @@ lister_args = { "url": "https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/", }, "pagure": {"instance": "pagure.io"}, + "gitweb": { + "url": "https://git.distorted.org.uk/~mdw/", + }, }