1. Giorgos Keramidas
  2. freebsd-doc-convert

Commits

Giorgos Keramidas  committed 1fe7dd4

Initial revision.

  • Participants
  • Branches default

Comments (0)

Files changed (3)

File README.md

View file
  • Ignore whitespace
+This is a collection of scripts and other data files that I use on my personal
+laptop to convert and keep in sync a Mercurial clone of the FreeBSD doc/ tree.
+
+For questions about why and how these scripts work, and how you can adapt them
+to set up your own Mercurial-based workflow, please do not hesitate to contact
+me at [keramida@FreeBSD.org](mailto:keramida@FreeBSD.org).

File authormap.txt

View file
  • Ignore whitespace
+aaron = Aaron Dalton <aaron@FreeBSD.org>
+abial = Andrzej Bialecki <abial@FreeBSD.org>
+ache = Andrey A. Chernov <ache@FreeBSD.org>
+achim = Achim Leubner <achim@FreeBSD.org>
+acm = José Alonso Cárdenas Márquez <acm@FreeBSD.org>
+adam = Adam David <adam@FreeBSD.org>
+adamw = Adam Weinberger <adamw@FreeBSD.org>
+ade = Ade Lovett <ade@FreeBSD.org>
+adrian = Adrian Chadd <adrian@FreeBSD.org>
+ae = Andrey V. Elsukov <ae@FreeBSD.org>
+ahasty = Amancio Hasty <ahasty@FreeBSD.org>
+ahze = Michael Johnson <ahze@FreeBSD.org>
+ak = Alex Kozlov <ak@FreeBSD.org>
+akiyama = Shunsuke Akiyama <akiyama@FreeBSD.org>
+alane = Alan Eldridge <alane@FreeBSD.org>
+alc = Alan L. Cox <alc@FreeBSD.org>
+ale = Alex Dupre <ale@FreeBSD.org>
+alepulver = Alejandro Pulver <alepulver@FreeBSD.org>
+alex = Alexander Langer <alex@FreeBSD.org>
+alexbl = Alexander Botero-Lowry <alexbl@FreeBSD.org>
+alfred = Alfred Perlstein <alfred@FreeBSD.org>
+alm = Andrew Moore <alm@FreeBSD.org>
+ambrisko = Doug Ambrisko <ambrisko@FreeBSD.org>
+amdmi3 = Dmitry Marakasov <amdmi3@FreeBSD.org>
+amorita = Akio Morita <amorita@FreeBSD.org>
+amurai = Atsushi Murai <amurai@FreeBSD.org>
+anchie = Ana Kukec <anchie@FreeBSD.org>
+anders = Anders Nordby <anders@FreeBSD.org>
+andre = Andre Oppermann <andre@FreeBSD.org>
+andreas = Andreas Klemm <andreas@FreeBSD.org>
+andreast = Andreas Tobler <andreast@FreeBSD.org>
+andrew = Andrew Turner <andrew@FreeBSD.org>
+andy = Andrey Zakhvatov <andy@FreeBSD.org>
+anholt = Eric Anholt <anholt@FreeBSD.org>
+anray = Andrey Slusar <anray@FreeBSD.org>
+antoine = Antoine Brodin <antoine@FreeBSD.org>
+araujo = Marcelo Araujo <araujo@FreeBSD.org>
+archie = Archie Cobbs <archie@FreeBSD.org>
+ariff = Ariff Abdullah <ariff@FreeBSD.org>
+arr = Andrew R. Reiter <arr@FreeBSD.org>
+art = Artem Belevich <art@FreeBSD.org>
+arun = Arun Sharma <arun@FreeBSD.org>
+arved = Tilman Keskinöz <arved@FreeBSD.org>
+asami = Satoshi Asami <asami@FreeBSD.org>
+ashish = Ashish SHUKLA <ashish@FreeBSD.org>
+asmodai = Jeroen Ruigrok van der Werven <asmodai@FreeBSD.org>
+assar = Assar Westerlund <assar@FreeBSD.org>
+ats = Andreas Schulz <ats@FreeBSD.org>
+attilio = Attilio Rao <attilio@FreeBSD.org>
+avatar = Tai-hwa Liang <avatar@FreeBSD.org>
+avg = Andriy Gapon <avg@FreeBSD.org>
+avilla = Alberto Villa <avilla@FreeBSD.org>
+avl = Alexander Logvinov <avl@FreeBSD.org>
+awebster = Andrew Webster <awebster@pubnix.net>
+az = Andrej Zverev <az@FreeBSD.org>
+babkin = Sergey Babkin <babkin@FreeBSD.org>
+bakul = Bakul Shah <bakul@FreeBSD.org>
+bapt = Baptiste Daroussin <bapt@FreeBSD.org>
+bar = Barbara Guida <bar@FreeBSD.org>
+barner = Simon Barner <barner@FreeBSD.org>
+bbraun = Rob Braun <bbraun@FreeBSD.org>
+bcr = Benedict Reuschling <bcr@FreeBSD.org>
+bde = Bruce Evans <bde@FreeBSD.org>
+bdrewery = Bryan Drewery <bdrewery@FreeBSD.org>
+bean = Rebecca Visger <bean@FreeBSD.org>
+beat = Beat Gätzi <beat@FreeBSD.org>
+beech = Beech Rintoul <beech@FreeBSD.org>
+ben = Ben Smithurst <ben@FreeBSD.org>
+benjsc = Benjamin Close <benjsc@FreeBSD.org>
+benl = Ben Laurie <benl@FreeBSD.org>
+benno = Benno Rice <benno@FreeBSD.org>
+bf = Brendan Fabeny <bf@FreeBSD.org>
+bgray = Ben Gray <bgray@FreeBSD.org>
+billf = Bill Fumerola <billf@FreeBSD.org>
+bjk = Benjamin Kaduk <bjk@FreeBSD.org>
+blackend = Marc Fonvieille <blackend@FreeBSD.org>
+bland = Alexander Nedotsukov <bland@FreeBSD.org>
+bmah = Bruce A. Mah <bmah@FreeBSD.org>
+bmilekic = Bosko Milekic <bmilekic@FreeBSD.org>
+bms = Bruce M. Simpson <bms@FreeBSD.org>
+bp = Boris Popov <bp@FreeBSD.org>
+brandon = Brandon Gillespie <brandon@FreeBSD.org>
+brd = Brad Davis <brd@FreeBSD.org>
+brian = Brian Somers <brian@FreeBSD.org>
+brix = Henrik Brix Andersen <brix@FreeBSD.org>
+brooks = Brooks Davis <brooks@FreeBSD.org>
+brucec = Bruce Cran <brucec@FreeBSD.org>
+brueffer = Christian Brüffer <brueffer@FreeBSD.org>
+bruno = Bruno Ducrot <bruno@FreeBSD.org>
+bryanv = Bryan Venteicher <bryanv@FreeBSD.org>
+bsam = Boris Samorodov <bsam@FreeBSD.org>
+bschmidt = Bernhard Schmidt <bschmidt@FreeBSD.org>
+bsd = Brian S. Dean <bsd@FreeBSD.org>
+bushman = Michael Bushkov <bushman@FreeBSD.org>
+bvs = Vitaly Bogdanov <bvs@FreeBSD.org>
+bz = Bjoern A. Zeeb <bz@FreeBSD.org>
+carl = Carl Delsey <carl@FreeBSD.org>
+carvay = J. Vicente Carrasco Vayá <carvay@FreeBSD.org>
+cawimm = Charles A. Wimmer <cawimm@FreeBSD.org>
+cel = Chuck Lever <cel@FreeBSD.org>
+ceri = Ceri Davies <ceri@FreeBSD.org>
+cg = Cameron Grant <cg@FreeBSD.org>
+charnier = Philippe Charnier <charnier@FreeBSD.org>
+chern = Chern Lee <chern@FreeBSD.org>
+cherry = Cherry G. Mathew <cherry@FreeBSD.org>
+chinsan = Chin-San Huang <chinsan@FreeBSD.org>
+chm = Christoph Herrmann <chm@FreeBSD.org>
+chmr = Christoph Robitschko <chmr@FreeBSD.org>
+chris = Chris Costello <chris@FreeBSD.org>
+chuckr = Chuck Robey <chuckr@FreeBSD.org>
+cjc = Crist J. Clark <cjc@FreeBSD.org>
+cjh = Choi Junho <cjh@FreeBSD.org>
+clement = Clement Laforet <clement@FreeBSD.org>
+clive = Clive Lin <clive@FreeBSD.org>
+clsung = Cheng-Lung Sung <clsung@FreeBSD.org>
+cognet = Olivier Houchard <cognet@FreeBSD.org>
+cokane = Coleman Kane <cokane@FreeBSD.org>
+conklin = Brian E. Conklin <conklin@FreeBSD.org>
+cp = Chuck Paterson <cp@FreeBSD.org>
+cperciva = Colin Percival <cperciva@FreeBSD.org>
+cpiazza = Chris Piazza <cpiazza@FreeBSD.org>
+cracauer = Martin Cracauer <cracauer@FreeBSD.org>
+crees = Chris Rees <crees@FreeBSD.org>
+cs = Carlo Strub <cs@FreeBSD.org>
+csgr = Geoff Rehmet <csgr@FreeBSD.org>
+cshumway = Christopher Shumway <cshumway@FreeBSD.org>
+csjp = Christian S.J. Peron <csjp@FreeBSD.org>
+culot = Frederic Culot <culot@FreeBSD.org>
+cvs2svn = Subversion Importer <devnull@FreeBSD.org>
+cwt = Chris Timmons <cwt@FreeBSD.org>
+cy = Cy Schubert <cy@FreeBSD.org>
+daichi = Daichi GOTO <daichi@FreeBSD.org>
+damien = Damien Bergamini <damien@FreeBSD.org>
+dan = Dan Moschuk <dan@FreeBSD.org>
+danfe = Alexey Dokuchaev <danfe@FreeBSD.org>
+danger = Daniel Geržo <danger@FreeBSD.org>
+dannyboy = Daniel Harris <dannyboy@FreeBSD.org>
+danny = Daniel O'Callaghan <danny@FreeBSD.org>
+darrenr = Darren Reed <darrenr@FreeBSD.org>
+das = David Schultz <das@FreeBSD.org>
+davidc = Chad David <davidc@FreeBSD.org>
+davidch = David Christensen <davidch@FreeBSD.org>
+davide = Davide Italiano <davide@FreeBSD.org>
+davidg = David Greenman <davidg@FreeBSD.org>
+davidn = David Nugent <davidn@FreeBSD.org>
+davidxu = David Xu <davidxu@FreeBSD.org>
+dbaker = Daniel Baker <dbaker@FreeBSD.org>
+db = Diane Bruce <db@FreeBSD.org>
+dbn = David Naylor <dbn@FreeBSD.org>
+dburr = Donald Burr <dburr@FreeBSD.org>
+dchagin = Dmitry Chagin <dchagin@FreeBSD.org>
+dcs = Daniel C. Sobral <dcs@FreeBSD.org>
+dd = Dima Dorfman <dd@FreeBSD.org>
+dds = Diomidis D. Spinellis <dds@FreeBSD.org>
+dec = David E. Cross <dec@FreeBSD.org>
+decke = Bernhard Fröhlich <decke@FreeBSD.org>
+deischen = Daniel Eischen <deischen@FreeBSD.org>
+delphij = Xin Li <delphij@FreeBSD.org>
+demon = Dmitry Sivachenko <demon@FreeBSD.org>
+den = Denis Peplin <den@FreeBSD.org>
+des = Dag-Erling Smørgrav <des@FreeBSD.org>
+dfr = Doug Rabson <dfr@FreeBSD.org>
+dg = David Greenman <dg@FreeBSD.org>
+dhartmei = Daniel Hartmeier <dhartmei@FreeBSD.org>
+dhn = Dennis Herrmann <dhn@FreeBSD.org>
+dhw = David Wolfskill <dhw@FreeBSD.org>
+dick = Richard Seaman Jr. <dick@FreeBSD.org>
+dillon = Matthew Dillon <dillon@FreeBSD.org>
+dima = Dima Ruban <dima@FreeBSD.org>
+dim = Dimitry Andric <dim@FreeBSD.org>
+dinoex = Dirk Meyer <dinoex@FreeBSD.org>
+dirk = Dirk Frömberg <dirk@FreeBSD.org>
+dmarion = Damjan Marion <dmarion@FreeBSD.org>
+dmlb = Duncan Barclay <dmlb@FreeBSD.org>
+doceng = Doc Manager <doceng@FreeBSD.org>
+dougb = Doug Barton <dougb@FreeBSD.org>
+dru = Dru Lavigne <dru@FreeBSD.org>
+dryice = Dryice Dong Liu <dryice@FreeBSD.org>
+dt = Dmitrij Tejblum <dt@FreeBSD.org>
+dteske = Devin Teske <dteske@FreeBSD.org>
+dufault = Peter Dufault <dufault@FreeBSD.org>
+dumbbell = Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
+dwcjr = David W. Chapman Jr. <dwcjr@FreeBSD.org>
+dwhite = Doug White <dwhite@FreeBSD.org>
+dwmalone = David Malone <dwmalone@FreeBSD.org>
+dyson = John Dyson <dyson@FreeBSD.org>
+eadler = Eitan Adler <eadler@FreeBSD.org>
+ebrandi = Edson Brandi <ebrandi@FreeBSD.org>
+ed = Ed Schouten <ed@FreeBSD.org>
+edwin = Edwin Groothuis <edwin@FreeBSD.org>
+ehaupt = Emanuel Haupt <ehaupt@FreeBSD.org>
+eik = Oliver Eikemeier <eik@FreeBSD.org>
+eivind = Eivind Eklund <eivind@FreeBSD.org>
+ejc = Eric J. Chet <ejc@FreeBSD.org>
+emaste = Ed Maste <emaste@FreeBSD.org>
+emax = Maksim Yevmenkin <emax@FreeBSD.org>
+emoore = Eric Moore <emoore@FreeBSD.org>
+eric = Eric Melville <eric@FreeBSD.org>
+erich = Eric L. Hernes <erich@FreeBSD.org>
+eri = Ermal Luçi <eri@FreeBSD.org>
+erik = Erik Cederstrand <erik@FreeBSD.org>
+erwin = Erwin Lansing <erwin@FreeBSD.org>
+fabient = Fabien Thomas <fabient@FreeBSD.org>
+fanf = Tony Finch <fanf@FreeBSD.org>
+farrokhi = Babak Farrokhi <farrokhi@FreeBSD.org>
+fenner = Bill Fenner <fenner@FreeBSD.org>
+fjoe = Max Khon <fjoe@FreeBSD.org>
+flathill = Seiichirou Hiraoka <flathill@FreeBSD.org>
+flo = Florian Smeets <flo@FreeBSD.org>
+fluffy = Dima Panov <fluffy@FreeBSD.org>
+flz = Florent Thoumie <flz@FreeBSD.org>
+foxfair = Foxfair Hu <foxfair@FreeBSD.org>
+fsmp = Steve Passe <fsmp@FreeBSD.org>
+furuta = Atsushi Furuta <furuta@FreeBSD.org>
+gabor = Gábor Kövesdán <gabor@FreeBSD.org>
+gad = Garance A Drosehn <gad@FreeBSD.org>
+gahr = Pietro Cerutti <gahr@FreeBSD.org>
+gallatin = Andrew Gallatin <gallatin@FreeBSD.org>
+ganbold = Ganbold Tsagaankhuu <ganbold@FreeBSD.org>
+garga = Renato Botelho <garga@FreeBSD.org>
+garys = Gary W. Swearingen <garys@FreeBSD.org>
+gavin = Gavin Atkinson <gavin@FreeBSD.org>
+gber = Grzegorz Bernacki <gber@FreeBSD.org>
+gblach = Grzegorz Blach <gblach@FreeBSD.org>
+gclarkii = Gary Clark II <gclarkii@FreeBSD.org>
+gehenna = Masahide Maekawa <gehenna@FreeBSD.org>
+gerald = Gerald Pfeifer <gerald@FreeBSD.org>
+ghelmer = Guy Helmer <ghelmer@FreeBSD.org>
+gibbs = Justin T. Gibbs <gibbs@FreeBSD.org>
+gioria = Sebastien Gioria <gioria@FreeBSD.org>
+girgen = Palle Girgensohn <girgen@FreeBSD.org>
+gjb = Glen Barber <gjb@FreeBSD.org>
+gj = Gary Jennejohn <gj@FreeBSD.org>
+glarkin = Greg Larkin <glarkin@FreeBSD.org>
+gleb = Gleb Kurtsou <gleb@FreeBSD.org>
+glebius = Gleb Smirnoff <glebius@FreeBSD.org>
+glewis = Greg Lewis <glewis@FreeBSD.org>
+gnn = George V. Neville-Neil <gnn@FreeBSD.org>
+gonzo = Oleksandr Tymoshenko <gonzo@FreeBSD.org>
+gordon = Gordon Tetlow <gordon@FreeBSD.org>
+gpalmer = Gary Palmer <gpalmer@FreeBSD.org>
+graichen = Thomas Graichen <graichen@FreeBSD.org>
+green = Brian Feldman <green@FreeBSD.org>
+grehan = Peter Grehan <grehan@FreeBSD.org>
+greid = George C. A. Reid <greid@FreeBSD.org>
+grog = Greg Lehey <grog@FreeBSD.org>
+groudier = Gerard Roudier <groudier@FreeBSD.org>
+gryphon = Coranth Gryphon <gryphon@FreeBSD.org>
+gshapiro = Gregory Neil Shapiro <gshapiro@FreeBSD.org>
+gsutter = Gregory Sutter <gsutter@FreeBSD.org>
+guido = Guido van Rooij <guido@FreeBSD.org>
+hanai = Hiroyuki Hanai <hanai@FreeBSD.org>
+harti = Hartmut Brandt <harti@FreeBSD.org>
+helbig = Wolfgang Helbig <helbig@FreeBSD.org>
+hm = Hellmuth Michaelis <hm@FreeBSD.org>
+hmp = Hiten Pandya <hmp@FreeBSD.org>
+hoek = Tim Vanderhoek <hoek@FreeBSD.org>
+horikawa = Kazuo Horikawa <horikawa@FreeBSD.org>
+hosokawa = Tatsumi Hosokawa <hosokawa@FreeBSD.org>
+hq = Herve Quiroz <hq@FreeBSD.org>
+hrs = Hiroki Sato <hrs@FreeBSD.org>
+hselasky = Hans Petter Selasky <hselasky@FreeBSD.org>
+hsu = Jeffrey Hsu <hsu@FreeBSD.org>
+ian = Ian Lepore <ian@FreeBSD.org>
+iedowse = Ian Dowse <iedowse@FreeBSD.org>
+ijliao = Ying-Chieh Liao <ijliao@FreeBSD.org>
+ikob = Katsushi Kobayashi <ikob@FreeBSD.org>
+imp = Warner Losh <imp@FreeBSD.org>
+imura = R. Imura <imura@FreeBSD.org>
+issei = Issei Suzuki <issei@FreeBSD.org>
+issyl0 = Isabell Long <issyl0@FreeBSD.org>
+itetcu = Ion-Mihai Tetcu <itetcu@FreeBSD.org>
+itojun = Jun-ichiro itojun Hagino <itojun@FreeBSD.org>
+ivoras = Ivan Voras <ivoras@FreeBSD.org>
+iwasaki = Mitsuru IWASAKI <iwasaki@FreeBSD.org>
+jacula = Giuseppe Pilichi <jacula@FreeBSD.org>
+jadawin = Philippe Audeoud <jadawin@FreeBSD.org>
+jake = Jake Burkholder <jake@FreeBSD.org>
+jamie = Jamie Gritton <jamie@FreeBSD.org>
+jamil = Jamil Weatherby <jamil@FreeBSD.org>
+jase = Jase Thew <jase@FreeBSD.org>
+jasone = Jason Evans <jasone@FreeBSD.org>
+jayanth = Jayanth Vijayaraghavan <jayanth@FreeBSD.org>
+jb = John Birrell <jb@FreeBSD.org>
+jcamou = Jesus R. Camou <jcamou@FreeBSD.org>
+jceel = Jakub Wojciech Klama <jceel@FreeBSD.org>
+jchandra = Jayachandran C. <jchandra@FreeBSD.org>
+jdp = John Polstra <jdp@FreeBSD.org>
+jedgar = Chris D. Faulhaber <jedgar@FreeBSD.org>
+jeff = Jeff Roberson <jeff@FreeBSD.org>
+jehamby = Jake Hamby <jehamby@FreeBSD.org>
+jeh = James E. Housley <jeh@FreeBSD.org>
+jennifer = Jennifer Yang <jennifer@FreeBSD.org>
+jesper = Jesper Skriver <jesper@FreeBSD.org>
+jesusr = Jesus Rodriguez Cuesta <jesusr@FreeBSD.org>
+jfieber = John Fieber <jfieber@FreeBSD.org>
+jfitz = James FitzGibbon <jfitz@FreeBSD.org>
+jfv = Jack F. Vogel <jfv@FreeBSD.org>
+jgh = Jason Helfman <jgh@FreeBSD.org>
+jgreco = Joe Greco <jgreco@FreeBSD.org>
+jhale = Jason E. Hale <jhale@FreeBSD.org>
+jhay = John Hay <jhay@FreeBSD.org>
+jhb = John Baldwin <jhb@FreeBSD.org>
+jhibbits = Justin Hibbits <jhibbits@FreeBSD.org>
+jh = Jaakko Heinonen <jh@FreeBSD.org>
+jhs = Julian Stacey <jhs@FreeBSD.org>
+jilles = Jilles Tjoelker <jilles@FreeBSD.org>
+jimharris = Jim Harris <jimharris@FreeBSD.org>
+jim = Jim Mock <jim@FreeBSD.org>
+jinmei = Tatuya Jinmei <jinmei@FreeBSD.org>
+jkh = Jordan K. Hubbard <jkh@FreeBSD.org>
+jkim = Jung-uk Kim <jkim@FreeBSD.org>
+jkois = Johann Kois <jkois@FreeBSD.org>
+jkoshy = Joseph Koshy <jkoshy@FreeBSD.org>
+jlaffaye = Julien Laffaye <jlaffaye@FreeBSD.org>
+jlemon = Jonathan Lemon <jlemon@FreeBSD.org>
+jlh = Jeremie Le Hen <jlh@FreeBSD.org>
+jlrobin = James L. Robinson <jlrobin@FreeBSD.org>
+jls = Jordan Sissel <jls@FreeBSD.org>
+jmacd = Joshua Peck Macdonald <jmacd@FreeBSD.org>
+jmallett = Juli Mallett <jmallett@FreeBSD.org>
+jmas = Jose M. Alcaide <jmas@FreeBSD.org>
+jmb = Jonathan M. Bresler <jmb@FreeBSD.org>
+jmc = jmc@FreeBSD.org
+jmelo = Jean Milanez Melo <jmelo@FreeBSD.org>
+jmg = John-Mark Gurney <jmg@FreeBSD.org>
+jmz = Jean-Marc Zucconi <jmz@FreeBSD.org>
+joe = Josef Karthauser <joe@FreeBSD.org>
+joel = Joel Dahl <joel@FreeBSD.org>
+joerg = Jörg Wunsch <joerg@FreeBSD.org>
+johan = Johan Karlsson <johan@FreeBSD.org>
+johans = Johan van Selst <johans@FreeBSD.org>
+john = John Cavanaugh <john@FreeBSD.org>
+jonathan = Jonathan Anderson <jonathan@FreeBSD.org>
+jon = Jonathan Chen <jon@FreeBSD.org>
+josef = Josef El-Rayes <josef@FreeBSD.org>
+jpaetzel = Josh Paetzel <jpaetzel@FreeBSD.org>
+jraynard = James Raynard <jraynard@FreeBSD.org>
+jsa = Joseph S. Atkinson <jsa@FreeBSD.org>
+jseger = Justin M. Seger <jseger@FreeBSD.org>
+jtc = J.T. Conklin <jtc@FreeBSD.org>
+julian = Julian Elischer <julian@FreeBSD.org>
+jvh = Johannes Helander <jvh@FreeBSD.org>
+jwd = John W. De Boskey <jwd@FreeBSD.org>
+jylefort = Jean-Yves Lefort <jylefort@FreeBSD.org>
+kaiw = Kai Wang <kaiw@FreeBSD.org>
+kan = Alexander Kabaev <kan@FreeBSD.org>
+kargl = Steve Kargl <kargl@FreeBSD.org>
+karl = Karl Strickland <karl@FreeBSD.org>
+kato = KATO Takenori <kato@FreeBSD.org>
+kbyanc = Kelly Yancey <kbyanc@FreeBSD.org>
+keichii = Michael C. Wu <keichii@FreeBSD.org>
+keith = Jing-Tang Keith Jang <keith@FreeBSD.org>
+ken = Kenneth D. Merry <ken@FreeBSD.org>
+kensmith = Ken Smith <kensmith@FreeBSD.org>
+keramida = Giorgos Keramidas <keramida@FreeBSD.org>
+kevlo = Kevin Lo <kevlo@FreeBSD.org>
+kib = Konstantin Belousov <kib@FreeBSD.org>
+kientzle = Tim Kientzle <kientzle@FreeBSD.org>
+kiri = Kazuhiko Kiriyama <kiri@FreeBSD.org>
+kjc = Kenjiro Cho <kjc@FreeBSD.org>
+kmacy = Kip Macy <kmacy@FreeBSD.org>
+kmoore = Kris Moore <kmoore@FreeBSD.org>
+knu = Akinori MUSHA <knu@FreeBSD.org>
+koitsu = Jeremy Chadwick <koitsu@FreeBSD.org>
+koobs = Kubilay Kocak <koobs@FreeBSD.org>
+krion = Kirill Ponomarew <krion@FreeBSD.org>
+kris = Kris Kennaway <kris@FreeBSD.org>
+kuriyama = Jun Kuriyama <kuriyama@FreeBSD.org>
+kwm = Koop Mast <kwm@FreeBSD.org>
+lars = Lars Fredriksen <lars@FreeBSD.org>
+laszlof = Frank J. Laszlo <laszlof@FreeBSD.org>
+lawrance = Sam Lawrance <lawrance@FreeBSD.org>
+lbr = Lars Balker Rasmussen <lbr@FreeBSD.org>
+leeym = Yen-Ming Lee <leeym@FreeBSD.org>
+le = Lukas Ertl <le@FreeBSD.org>
+lesi = Dejan Lesjak <lesi@FreeBSD.org>
+lev = Lev A. Serebryakov <lev@FreeBSD.org>
+lile = Larry Lile <lile@FreeBSD.org>
+linimon = Mark Linimon <linimon@FreeBSD.org>
+lioux = Mário Sérgio Fujikawa Ferreira <lioux@FreeBSD.org>
+lippe = Felippe de Meirelles Motta <lippe@FreeBSD.org>
+ljo = L Jonas Olsson <ljo@FreeBSD.org>
+lkoeller = Lars Koeller <lkoeller@FreeBSD.org>
+lme = Lars Engels <lme@FreeBSD.org>
+loader = Fukang Chen <loader@FreeBSD.org>
+lofi = Michael Nottebrock <lofi@FreeBSD.org>
+logo = Valentino Vaschetto <logo@FreeBSD.org>
+lstewart = Lawrence Stewart <lstewart@FreeBSD.org>
+lth = Lars Thegler <lth@FreeBSD.org>
+luigi = Luigi Rizzo <luigi@FreeBSD.org>
+lulf = Ulf Lilleengen <lulf@FreeBSD.org>
+luoqi = Luoqi Chen <luoqi@FreeBSD.org>
+lwhsu = Li-Wen Hsu <lwhsu@FreeBSD.org>
+lx = David Thiel <lx@FreeBSD.org>
+madpilot = Guido Falsi <madpilot@FreeBSD.org>
+maho = Maho Nakata <maho@FreeBSD.org>
+makc = Max Brazhnikov <makc@FreeBSD.org>
+mandree = Matthias Andree <mandree@FreeBSD.org>
+manolis = Manolis Kiagias <manolis@FreeBSD.org>
+marcel = Marcel Moolenaar <marcel@FreeBSD.org>
+marck = Dmitry Morozovsky <marck@FreeBSD.org>
+marcus = Joe Marcus Clarke <marcus@FreeBSD.org>
+marius = Marius Strobl <marius@FreeBSD.org>
+markj = Mark Johnston <markj@FreeBSD.org>
+markm = Mark Murray <markm@FreeBSD.org>
+marko = Mark Ovens <marko@FreeBSD.org>
+markp = Mark Pulford <markp@FreeBSD.org>
+marks = Mark Santcroos <marks@FreeBSD.org>
+markus = Markus Brüffer <markus@FreeBSD.org>
+martin = Martin Renters <martin@FreeBSD.org>
+martymac = Ganael Laplanche <martymac@FreeBSD.org>
+matk = Mathew Kanner <matk@FreeBSD.org>
+mat = Mathieu Arnold <mat@FreeBSD.org>
+matteo = Matteo Riondato <matteo@FreeBSD.org>
+matthew = Matthew Seaman <matthew@FreeBSD.org>
+matusita = Makoto Matsushita <matusita@FreeBSD.org>
+mav = Alexander Motin <mav@FreeBSD.org>
+maxim = Maxim Konovalov <maxim@FreeBSD.org>
+max = Masafumi Max NAKANE <max@FreeBSD.org>
+mbarkah = Ade Barkah <mbarkah@FreeBSD.org>
+mb = Maxim Bolotin <mb@FreeBSD.org>
+mbr = Martin Blapp <mbr@FreeBSD.org>
+mckay = Stephen McKay <mckay@FreeBSD.org>
+mckusick = Kirk McKusick <mckusick@FreeBSD.org>
+mdf = Matthew D Fleming <mdf@FreeBSD.org>
+mdodd = Matthew N. Dodd <mdodd@FreeBSD.org>
+meganm = Megan McCormack <meganm@FreeBSD.org>
+melifaro = Alexander V. Chernikov <melifaro@FreeBSD.org>
+metal = Koichi Suzuki <metal@FreeBSD.org>
+mezz = Jeremy Messenger <mezz@FreeBSD.org>
+mharo = Michael Haro <mharo@FreeBSD.org>
+mheinen = Martin Heinen <mheinen@FreeBSD.org>
+mich = Michael Landin Hostbaek <mich@FreeBSD.org>
+mikeh = Mike Heffner <mikeh@FreeBSD.org>
+mike = Mike Barcroft <mike@FreeBSD.org>
+mi = Mikhail Teterin <mi@FreeBSD.org>
+mini = Jonathan Mini <mini@FreeBSD.org>
+mita = Yoshio MITA <mita@FreeBSD.org>
+miwi = Martin Wilke <miwi@FreeBSD.org>
+mjacob = Matthew Jacob <mjacob@FreeBSD.org>
+mjg = Mateusz Guzik <mjg@FreeBSD.org>
+mks = Mike Spengler <mks@FreeBSD.org>
+mlaier = Max Laier <mlaier@FreeBSD.org>
+mm = Martin Matuska <mm@FreeBSD.org>
+mnag = Marcus Alves Grando <mnag@FreeBSD.org>
+mohans = Mohan Srinivasan <mohans@FreeBSD.org>
+monthadar = Monthadar Al Jaberi <monthadar@FreeBSD.org>
+motoyuki = Motoyuki Konno <motoyuki@FreeBSD.org>
+mph = Matthew Hunt <mph@FreeBSD.org>
+mp = Mark Peek <mp@FreeBSD.org>
+mpp = Mike Pritchard <mpp@FreeBSD.org>
+mr = Michael Reifenberger <mr@FreeBSD.org>
+msmith = Mike Smith <msmith@FreeBSD.org>
+mtaylor = Mark J. Taylor <mtaylor@FreeBSD.org>
+mtm = Mike Makonnen <mtm@FreeBSD.org>
+murray = Murray Stokely <murray@FreeBSD.org>
+mux = Maxime Henrion <mux@FreeBSD.org>
+mva = Marcus von Appen <mva@FreeBSD.org>
+mwlucas = Michael Lucas <mwlucas@FreeBSD.org>
+naddy = Christian Weisgerber <naddy@FreeBSD.org>
+nakai = Yukihiro Nakai <nakai@FreeBSD.org>
+nate = Nate Williams <nate@FreeBSD.org>
+nbm = Neil Blakey-Milner <nbm@FreeBSD.org>
+nectar = Jacques Vidrine <nectar@FreeBSD.org>
+neel = Neel Natu <neel@FreeBSD.org>
+nemoliu = Tong Liu <nemoliu@FreeBSD.org>
+netchild = Alexander Leidinger <netchild@FreeBSD.org>
+newton = Mark Newton <newton@FreeBSD.org>
+nhibma =  <nhibma@FreeBSD.org>
+n_hibma = Nick Hibma <n_hibma@FreeBSD.org>
+niels = Niels Heinen <niels@FreeBSD.org>
+niklas = Niklas Saers <niklas@FreeBSD.org>
+nik = Nik Clayton <nik@FreeBSD.org>
+nivit = Nicola Vitale <nivit@FreeBSD.org>
+njl = Nate Lawson <njl@FreeBSD.org>
+nobutaka = MANTANI Nobutaka <nobutaka@FreeBSD.org>
+non = Noriaki Mitsunaga <non@FreeBSD.org>
+nork = Norikatsu Shigemura <nork@FreeBSD.org>
+novel = Roman Bogorodskiy <novel@FreeBSD.org>
+nox = Juergen Lock <nox@FreeBSD.org>
+np = Navdeep Parhar <np@FreeBSD.org>
+nsayer = Nick Sayer <nsayer@FreeBSD.org>
+nsj = Nate Johnson <nsj@FreeBSD.org>
+nsouch = Nicolas Souchu <nsouch@FreeBSD.org>
+nwhitehorn = Nathan Whitehorn <nwhitehorn@FreeBSD.org>
+nyan = Takahashi Yoshihiro <nyan@FreeBSD.org>
+obraun = Oliver Braun <obraun@FreeBSD.org>
+obrien = David E. O'Brien <obrien@FreeBSD.org>
+ohauer = Olli Hauer <ohauer@FreeBSD.org>
+okazaki = OKAZAKI Tetsurou <okazaki@FreeBSD.org>
+olah = Andras Olah <olah@FreeBSD.org>
+oleg = Oleg Bulyzhin <oleg@FreeBSD.org>
+olgeni = Jimmy Olgeni <olgeni@FreeBSD.org>
+oliver = Oliver Lehmann <oliver@FreeBSD.org>
+olivierd = Olivier Duchateau <olivierd@FreeBSD.org>
+olli = Oliver Fromme <olli@FreeBSD.org>
+onoe = Atsushi Onoe <onoe@FreeBSD.org>
+orion = Orion Hodson <orion@FreeBSD.org>
+osa = Sergey A. Osokin <osa@FreeBSD.org>
+pat = Patrick Li <pat@FreeBSD.org>
+patrick = Patrick S. Gardella <patrick@FreeBSD.org>
+paul = Paul Richards <paul@FreeBSD.org>
+pav = Pav Lucistnik <pav@FreeBSD.org>
+pawel = Pawel Pekala <pawel@FreeBSD.org>
+pb = Pierre Beyssac <pb@FreeBSD.org>
+pclin = Po-Chien Lin <pclin@FreeBSD.org>
+pdeuskar = Prafulla Deuskar <pdeuskar@FreeBSD.org>
+pds = Peter da Silva <pds@FreeBSD.org>
+peadar = Peter Edwards <peadar@FreeBSD.org>
+perky = Hye-Shik Chang <perky@FreeBSD.org>
+petef = Pete Fritchman <petef@FreeBSD.org>
+peterj = Peter Jeremy <peterj@FreeBSD.org>
+peter = Peter Wemm <peter@FreeBSD.org>
+pfg = Pedro F. Giffuni <pfg@FreeBSD.org>
+pgj = Gábor Páli <pgj@FreeBSD.org>
+pgollucci = Philip M. Gollucci <pgollucci@FreeBSD.org>
+phantom = Alexey Zelkin <phantom@FreeBSD.org>
+philip = Philip Paeps <philip@FreeBSD.org>
+phk = Poul-Henning Kamp <phk@FreeBSD.org>
+pho = Peter Holm <pho@FreeBSD.org>
+piero = Piero Serini <piero@FreeBSD.org>
+pirzyk = Jim Pirzyk <pirzyk@FreeBSD.org>
+piso = Paolo Pisati <piso@FreeBSD.org>
+pjd = Pawel Jakub Dawidek <pjd@FreeBSD.org>
+pluknet = Sergey Kandaurov <pluknet@FreeBSD.org>
+proven = Chris Provenzano <proven@FreeBSD.org>
+ps = Paul Saab <ps@FreeBSD.org>
+pst = Paul Traina <pst@FreeBSD.org>
+qingli = Qing Li <qingli@FreeBSD.org>
+rafan = Rong-En Fan <rafan@FreeBSD.org>
+raj = Rafal Jaworowski <raj@FreeBSD.org>
+rakuco = Raphael Kubo da Costa <rakuco@FreeBSD.org>
+randi = Randi Harper <randi@FreeBSD.org>
+ray = Aleksandr Rybalko <ray@FreeBSD.org>
+rdivacky = Roman Divacky <rdivacky@FreeBSD.org>
+rea = Eygene Ryabinkin <rea@FreeBSD.org>
+rees = Jim Rees <rees@FreeBSD.org>
+reg = Jeremy Lea <reg@FreeBSD.org>
+remko = Remko Lodder <remko@FreeBSD.org>
+rene = René Ladan <rene@FreeBSD.org>
+rgrimes = Rodney W. Grimes <rgrimes@FreeBSD.org>
+ricardag = Ricardo AG <ricardag@FreeBSD.org>
+rich = Rich Murphey <rich@FreeBSD.org>
+rik = Roman Kurakin <rik@FreeBSD.org>
+rink = Rink Springer <rink@FreeBSD.org>
+rmacklem = Rick Macklem <rmacklem@FreeBSD.org>
+rmh = Robert Millan <rmh@FreeBSD.org>
+rm = Ruslan Mahmatkhanov <rm@FreeBSD.org>
+rnoland = Robert Noland <rnoland@FreeBSD.org>
+rnordier = Robert Nordier <rnordier@FreeBSD.org>
+roam = Peter Pentchev <roam@FreeBSD.org>
+roberto = Ollivier Robert <roberto@FreeBSD.org>
+robert = Robert Drehmel <robert@FreeBSD.org>
+rodrigc = Craig Rodrigues <rodrigc@FreeBSD.org>
+roger = Roger Hardiman <roger@FreeBSD.org>
+romain = Romain Tartière <romain@FreeBSD.org>
+root = FreeBSD admins <root@FreeBSD.org>
+rpaulo = Rui Paulo <rpaulo@FreeBSD.org>
+rpratt = Randy Pratt <rpratt@FreeBSD.org>
+rrs = Randall Stewart <rrs@FreeBSD.org>
+rse = Ralf S. Engelschall <rse@FreeBSD.org>
+rsm = Scott Mitchell <rsm@FreeBSD.org>
+rstone = Ryan Stone <rstone@FreeBSD.org>
+ru = Ruslan Ermilov <ru@FreeBSD.org>
+rushani = Hideyuki KURASHINA <rushani@FreeBSD.org>
+rvb = Robert V. Baron <rvb@FreeBSD.org>
+rv = Rajesh Vaidheeswarran <rv@FreeBSD.org>
+rwatson = Robert Watson <rwatson@FreeBSD.org>
+ryusuke = Ryusuke SUZUKI <ryusuke@FreeBSD.org>
+sada = SADA Kenji <sada@FreeBSD.org>
+sahil = Sahil Tandon <sahil@FreeBSD.org>
+sah = Sam Hopkins <sah@FreeBSD.org>
+sam = Sam Leffler <sam@FreeBSD.org>
+sanpei = MIHIRA Sanpei Yoshiro <sanpei@FreeBSD.org>
+sat = Andrew Pantyukhin <sat@FreeBSD.org>
+sbruno = Sean Bruno <sbruno@FreeBSD.org>
+sbz = Sofian Brabez <sbz@FreeBSD.org>
+scf = Sean Farley <scf@FreeBSD.org>
+scheidell = Michael Scheidell <scheidell@FreeBSD.org>
+schweikh = Jens Schweikhardt <schweikh@FreeBSD.org>
+scop = Ville Skyttä <scop@FreeBSD.org>
+scottl = Scott Long <scottl@FreeBSD.org>
+scrappy = Marc G. Fournier <scrappy@FreeBSD.org>
+seanc = Sean Chittenden <seanc@FreeBSD.org>
+sean = Sean Vickery <sean@FreeBSD.org>
+sef = Sean Eric Fagan <sef@FreeBSD.org>
+semenu = Semen Ustimenko <semenu@FreeBSD.org>
+sem = Sergey Matveychuk <sem@FreeBSD.org>
+sephe = Sepherosa Ziehau <sephe@FreeBSD.org>
+sepotvin = Stephane E. Potvin <sepotvin@FreeBSD.org>
+sergei = Sergei Kolobov <sergei@FreeBSD.org>
+se = Stefan Esser <se@FreeBSD.org>
+sf = FUJISHIMA Satsuki <sf@FreeBSD.org>
+shafeeq = Shafeeq Sinnamohideen <shafeeq@FreeBSD.org>
+shaun = Shaun Amott <shaun@FreeBSD.org>
+sheldonh = Sheldon Hearn <sheldonh@FreeBSD.org>
+shiba = Takeshi Shibagaki <shiba@FreeBSD.org>
+shige = Shigeyuki Fukushima <shige@FreeBSD.org>
+shin = Yoshinobu Inoue <shin@FreeBSD.org>
+silby = Mike Silbersack <silby@FreeBSD.org>
+simokawa = Hidetoshi Shimokawa <simokawa@FreeBSD.org>
+simon = Simon L. Nielsen <simon@FreeBSD.org>
+sjg = Simon J. Gerraty <sjg@FreeBSD.org>
+skreuzer = Steven Kreuzer <skreuzer@FreeBSD.org>
+skv = Sergey Skvortsov <skv@FreeBSD.org>
+skynyrd = Chris Timmons <skynyrd@FreeBSD.org>
+smace = Scott Mace <smace@FreeBSD.org>
+smkelly = Sean Kelly <smkelly@FreeBSD.org>
+smpatel = Sujal Patel <smpatel@FreeBSD.org>
+snb = Sean Nicholas Barkas <snb@FreeBSD.org>
+sobomax = Maxim Sobolev <sobomax@FreeBSD.org>
+sos = Søren Schmidt <sos@FreeBSD.org>
+sperber = Armin Pirkovitsch <sperber@FreeBSD.org>
+sson = Stacey Son <sson@FreeBSD.org>
+ssouhlal = Suleiman Souhlal <ssouhlal@FreeBSD.org>
+stark = Gene Stark <stark@FreeBSD.org>
+stas = Stanislav Sedov <stas@FreeBSD.org>
+stb = Stefan Bethke <stb@FreeBSD.org>
+stefanf = Stefan Farfeleder <stefanf@FreeBSD.org>
+stefan = Stefan Walter <stefan@FreeBSD.org>
+stephane = Stéphane Legrand <stephane@FreeBSD.org>
+stephen = Stephen Montgomery-Smith <stephen@FreeBSD.org>
+steve = Steve Price <steve@FreeBSD.org>
+sumikawa = Munechika Sumikawa <sumikawa@FreeBSD.org>
+sunpoet = Sunpoet Po-Chuan Hsieh <sunpoet@FreeBSD.org>
+sunpoet = Sunpoet Po-Chuan Hsieh <sunpoet@FreeBSD.org>
+suz = SUZUKI Shinsuke <suz@FreeBSD.org>
+swallace = Steven Wallace <swallace@FreeBSD.org>
+swills = Steve Wills <swills@FreeBSD.org>
+sylvio = Sylvio Cesar Teixeira <sylvio@FreeBSD.org>
+syrinx = Shteryana Shopova <syrinx@FreeBSD.org>
+syuu = Takuya ASADA <syuu@FreeBSD.org>
+tabthorpe = Thomas Abthorpe <tabthorpe@FreeBSD.org>
+tackerman = Tony Ackerman <tackerman@FreeBSD.org>
+takawata = Takanori Watanabe <takawata@FreeBSD.org>
+tanimura = Seigo Tanimura <tanimura@FreeBSD.org>
+taoka = Satoshi Taoka <taoka@FreeBSD.org>
+taras = Taras Korenko <taras@FreeBSD.org>
+tdb = Tim Bishop <tdb@FreeBSD.org>
+tedm = Ted Mittelstaedt <tedm@FreeBSD.org>
+tegge = Tor Egge <tegge@FreeBSD.org>
+tg = Thomas Gellekum <tg@FreeBSD.org>
+thepish = Peter Hawkins <thepish@FreeBSD.org>
+theraven = David Chisnall <theraven@FreeBSD.org>
+thierry = Thierry Thomas <thierry@FreeBSD.org>
+thomas = Thomas Quinot <thomas@FreeBSD.org>
+thompsa = Andrew Thompson <thompsa@FreeBSD.org>
+ticso = Bernd Walter <ticso@FreeBSD.org>
+tijl = Tijl Coosemans <tijl@FreeBSD.org>
+timur = Timur I. Bakeyev <timur@FreeBSD.org>
+tjr = Tim J. Robbins <tjr@FreeBSD.org>
+tj = Tom Judge <tj@FreeBSD.org>
+tmclaugh = Tom McLaughlin <tmclaugh@FreeBSD.org>
+tmm = Thomas Möstl <tmm@FreeBSD.org>
+tobez = Anton Berezin <tobez@FreeBSD.org>
+tomsoft = Thomas-Henning von Kamptz <tomsoft@FreeBSD.org>
+tom = Tom Hukins <tom@FreeBSD.org>
+torstenb = Torsten Blum <torstenb@FreeBSD.org>
+toshi = Toshihiko Arai <toshi@FreeBSD.org>
+tota = TAKATSU Tomonari <tota@FreeBSD.org>
+trasz = Edward Tomasz Napierala <trasz@FreeBSD.org>
+trevor = Trevor Johnson <trevor@FreeBSD.org>
+trhodes = Tom Rhodes <trhodes@FreeBSD.org>
+trociny = Mikolaj Golub <trociny@FreeBSD.org>
+truckman = Don Lewis <truckman@FreeBSD.org>
+tshiozak = Takuya SHIOZAKI <tshiozak@FreeBSD.org>
+tuexen = Michael Tuexen <tuexen@FreeBSD.org>
+twinterg = Thomas Wintergerst <twinterg@FreeBSD.org>
+uch = Yasushi UCHIYAMA <uch@FreeBSD.org>
+ue = Udo Erdelhoff <ue@FreeBSD.org>
+ugen = Ugen J.S.Antsilevich <ugen@FreeBSD.org>
+uhclem = Frank Durda IV <uhclem@FreeBSD.org>
+ulf = Ulf Zimmermann <ulf@FreeBSD.org>
+ume = Hajimu UMEMOTO <ume@FreeBSD.org>
+unfurl = Bill Swingle <unfurl@FreeBSD.org>
+ups = Stephan Uphoff <ups@FreeBSD.org>
+uqs = Ulrich Spörlein <uqs@FreeBSD.org>
+vanhu = Yvan Vanhullebus <vanhu@FreeBSD.org>
+vanilla = Vanilla I. Shu <vanilla@FreeBSD.org>
+vd = Vasil Dimov <vd@FreeBSD.org>
+versus = Konrad Jankowski <versus@FreeBSD.org>
+viny = Vincent Tougait <viny@FreeBSD.org>
+vkashyap = Vinod Kashyap <vkashyap@FreeBSD.org>
+vsevolod = Vsevolod Stakhov <vsevolod@FreeBSD.org>
+vs = Volker Stolz <vs@FreeBSD.org>
+vwe = Volker Werth <vwe@FreeBSD.org>
+wblock = Warren Block <wblock@FreeBSD.org>
+wen = Wen Heping <wen@FreeBSD.org>
+weongyo = Weongyo Jeong <weongyo@FreeBSD.org>
+wes = Wes Peters <wes@FreeBSD.org>
+whiteside = Don Whiteside <whiteside@acm.org>
+wilko = Wilko Bulte <wilko@FreeBSD.org>
+will = Will Andrews <will@FreeBSD.org>
+wjv = Johann Visagie <wjv@FreeBSD.org>
+wkoszek = Wojciech A. Koszek <wkoszek@FreeBSD.org>
+wollman = Garrett Wollman <wollman@FreeBSD.org>
+wosch = Wolfram Schneider <wosch@FreeBSD.org>
+wpaul = Bill Paul <wpaul@FreeBSD.org>
+wsalamon = Wayne Salamon <wsalamon@FreeBSD.org>
+wsanchez = Wilfredo Sánchez <wsanchez@FreeBSD.org>
+www = World Wide Web Owner <www@FreeBSD.org>
+wxs = Wesley Shields <wxs@FreeBSD.org>
+xride = Søren Straarup <xride@FreeBSD.org>
+yar = Yar Tikhiy <yar@FreeBSD.org>
+yoichi = Yoichi NAKAYAMA <yoichi@FreeBSD.org>
+yokota = Kazutaka YOKOTA <yokota@FreeBSD.org>
+yongari = Pyun YongHyeon <yongari@FreeBSD.org>
+yzlin = Yi-Jheng Lin <yzlin@FreeBSD.org>
+zack = Zack Kirsch <zack@FreeBSD.org>
+zarzycki = Dave Zarzycki <zarzycki@FreeBSD.org>
+zec = Marko Zec <zec@FreeBSD.org>
+zeising = Niclas Zeising <zeising@FreeBSD.org>
+zi = Ryan Steinmetz <zi@FreeBSD.org>
+zml = Zachary Loafman <zml@FreeBSD.org>
+znerd = Ernst de Haan <znerd@FreeBSD.org>
+zont = Andrey Zonov <zont@FreeBSD.org>
+smh = Steven Hartland <smh@FreeBSD.org>

File freebsd-doc-convert.sh

View file
  • Ignore whitespace
+#!/bin/sh
+#
+# AUtomated conversion of FreeBSD doc/ to Mercurial.
+#
+# Copyright (C) 2013, Giorgos Keramidas <keramida@FreeBSD.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+# ----- startup --------------------------------------------------------
+
+# Save some script startup environment information.  We'll need it later
+# when we have to look for configuration files and other data associated
+# with the script.
+
+progname=$( basename $0 )
+dirname=$( dirname $0 )
+dirname=$( ( cd ${dirname} ; pwd -P ) )
+
+# Set up a very basic locale environment, so our output doesn't look
+# very 'alien' depending on where/how we were spawned.
+export LANGUAGE='C'
+export LANG='C'
+export LC_ALL='C'
+unset LC_CTYPE LC_COLLATE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME
+
+# ----- misc script functions ------------------------------------------
+
+#
+# checkyesno var
+#       Test $1 variable, and warn if not set to YES or NO.
+#       Return 0 if it's "yes" (et al), nonzero otherwise.
+#
+checkyesno()
+{
+    eval _value=\$${1}
+    case $_value in
+    
+        #       "yes", "true", "on", or "1"
+    [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
+        return 0
+        ;;
+        
+        #       "no", "false", "off", or "0"
+    [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
+        return 1
+        ;;
+
+    *)
+        warn "\$${1} is not set properly."
+        return 1
+        ;;
+    esac
+}
+
+#
+# err exitval message
+#   Display $message to stderr, and exit with $exitval.
+#
+err()
+{
+    exitval=$1
+    shift
+    echo 1>&2 "$0: ERROR: $*"
+    exit $exitval
+}
+
+#
+# warn message
+#   Display message to stderr.
+#
+warn()
+{
+    echo 1>&2 "$0: WARNING: $*"
+}
+
+#
+# info message
+#   Display informational message to stderr.
+#
+info()
+{
+    echo 1>&2 "$0: INFO: $*"
+}
+
+#
+# debug message
+#   Display $message to stderr if $debug_enable is set.
+#
+debug_enable=${debug_enable:-0}
+debug()
+{
+    if checkyesno debug_enable ; then
+        echo 1>&2 "$0: DEBUG: $*"
+    fi
+}
+
+#
+# cleanup
+#   Cleanup handler for asynchronous script termination events.
+#   This should take care of removing any files and/or directories
+#   we have created to do our own work.
+#
+cleanup()
+{
+    if test -n "${CLEANUPFILES}" ; then
+        rm -fr ${CLEANUPFILES}
+    fi
+}
+
+trap 'cleanup' 0
+trap 'cleanup' 1 2 3 6 11 14 15
+
+# ----- script environment setup ---------------------------------------
+
+# The mapping we will use when we convert subversion committer usernames
+# to 'Real Name <email@FreeBSD.org>' committer ids.
+AUTHORMAP=${AUTHORMAP:-"${dirname}/authormap.txt"}
+debug "AUTHORMAP set to '${AUTHORMAP}'"
+
+# Where the subversion mirror of the FreeBSD doc/ repository lives.
+SVNREPO=${SVNREPO:-'file:///home/svn/doc'}
+debug "SVNREPO set to '${SVNREPO}'"
+
+# Where the converted mercurial repository lives.
+HGREPO=${HGREPO:-'/hg/freebsd/doc-head'}
+debug "HGREPO set to '${HGREPO}'"
+
+# Optional remote mirror of the mercurial repository.  If enabled, then
+# an 'hg push' command will be issued from the converted repository to
+# wherever PUSHREPO points.  If SSHKEY is also set, it will be used as
+# the default ssh key file for the push operation.
+PUSHREPO='ssh://hg@bitbucket.org/keramida/freebsd-doc-head'
+SSHKEY='/home/keramida/.ssh/bb_rsa'
+debug "PUSHREPO set to '${PUSHREPO}'"
+debug "SSHKEY set to '${SSHKEY}'"
+
+# Logfile for long-running commands, like svnsync or 'hg push'.  We trap
+# their output in this logfile when we run them, and if something breaks
+# we can display the output later.
+TMPLOG=$( mktemp "/tmp/tmplog-$$-XXXX" )
+CLEANFILES="${CLEANFILES} ${TMPLOG}"
+
+# ----- main script body -----------------------------------------------
+
+# The synchronization of the Subversion repository is pretty mundane and
+# will not, under normal conditions, cause any sort of serious problems.
+# We can run it an arbitrary number of times, as long as it doesn't fail
+# and leave the repository in an inconsistent state.
+debug 'Synchronizing Subversion repository.'
+svnsync sync "${SVNREPO}" > "${TMPLOG}" 2>&1
+if test $? -ne 0 ; then
+    cat "${TMPLOG}" 1>&2
+    err 1 'Subversion synchronization failed. Aborting.'
+fi
+
+# If we are supposed to use a custom authormap for the conversion from
+# subversion to mercurial, check that the authormap exists.  If not,
+# then ${authormap_flags} should remain empty.
+authormap_flags=''
+if test -n "${AUTHORMAP}" ; then
+    if test ! -f "${AUTHORMAP}" ; then
+        err 1 "Author map missing from ${AUTHORMAP}"
+    fi
+    authormap_flags="--authormap ${AUTHORMAP}"
+fi
+
+# Converting from subversion to the _same_ place that we are later going
+# to use for our own work is a bit silly, because the conversion process
+# is a 'destructive' operation: it can add an unpredictable number and
+# type of changesets; it can modify .hg/shamap and .hg/authormap in the
+# target repository. If we later find out that the current authormap is
+# not exhaustive, and we have to update it first, there's no safe way of
+# recovering from the partial conversion.
+#
+# To avoid this sort of problem, we are creating a temporary clone of
+# the target HGREPO repository, running the conversion in that clone,
+# and if all goes well we can safely pull from the remporary clone into
+# the final HGREPO and update the HGREPO/.hg/{author,sha}map files.
+
+HGTEMP=$( mktemp -d "/tmp/hgrepo-$$-XXXX" )
+CLEANUPFILES="${CLEANUPFILES} ${HGTEMP}"
+
+debug "Creating temporary mercurial clone at ${HGTEMP}"
+hg clone -U "${HGREPO}" "${HGTEMP}" > "${TMPLOG}" 2>&1
+if test $? -ne 0 ; then
+    cat "${TMPLOG}" 1>&2
+    err 1 "Failed to clone '${HGREPO}' to '${HGTEMP}'"
+fi
+
+debug "Copying author map from ${HGREPO}"
+if test -f "${HGREPO}/.hg/authormap" ; then
+    cp "${HGREPO}/.hg/authormap" "${HGTEMP}/.hg/"
+    if test $? -ne 0 ; then
+        err 1 "Cannot copy author map from $HGREPO to $HGTEMP"
+    fi
+fi
+debug "Copying SHA map from ${HGREPO}"
+if test -f "${HGREPO}/.hg/shamap" ; then
+    cp "${HGREPO}/.hg/shamap" "${HGTEMP}/.hg/"
+    if test $? -ne 0 ; then
+        err 1 "Cannot copy SHA map from $HGREPO to $HGTEMP"
+    fi
+fi
+
+debug "Converting from ${SVNREPO} to temp clone ${HGTEMP}"
+hg convert                                                      \
+    --branchsort                                                \
+    --config convert.svn.branches=''                            \
+    --config convert.svn.tag=''                                 \
+    --config convert.svn.trunk='head'                           \
+    --config convert.localtimezone='False'                      \
+    ${authormap_flags}                                          \
+                                                                \
+    "${SVNREPO}"                                                \
+    "${HGTEMP}"                                                 \
+    > "${TMPLOG}" 2>&1
+if test $? -ne 0 ; then
+    cat "${TMPLOG}" 1>&2
+    err 1 'Conversion from subversion failed.'
+fi
+
+debug "Checking for unmapped user names in ${HGREPO}"
+unmapped=$( hg -R "${HGREPO}" log --template '{author}\n' |     \
+    grep -vi '.* <.*@freebsd.org>' |                            \
+    wc -l | awk '{print $1}' )
+debug "$unmapped users found"
+if test "${unmapped}" -gt 0 ; then
+    err 1 "${unmapped} users found;" \
+        "author map must be updated for the new committers"
+fi
+
+debug "Copying new author map into $HGREPO"
+cp "${HGTEMP}/.hg/shamap" "${HGREPO}/.hg/"
+if test $? -ne 0 ; then
+    err 1 "Cannot copy new author map into $HGREPO"
+fi
+
+# Before copying the new SHA map blindly over the old one, make a backup
+# copy.  Then if we have later some problem pulling the new changesets
+# into the target repository
+debug "Copying new SHA map into $HGREPO"
+cp "${HGREPO}/.hg/shamap" "${HGREPO}/.hg/shamap-$$" ||          \
+    err 1 "Failed to save backup of ${HGREPO}/.hg/shamap"
+CLEANFILES="${CLEANFILES} ${HGREPO}/.hg/shamap-$$"
+cp "${HGTEMP}/.hg/shamap" "${HGREPO}/.hg/" ||                   \
+    err 1 "Cannot copy new SHA map into $HGREPO"
+
+debug "Pulling new changesets into ${HGREPO}"
+hg -R "${HGREPO}" pull "${HGTEMP}" > "${TMPLOG}" 2>&1
+if test $? -ne 0 ; then
+    # Restore old shamap, since we failed to pull any new commits and we
+    # dont' want the final shamap to include stuff that's not available
+    # in the repository.
+    cp "${HGREPO}/.hg/shamap-$$" "${HGREPO}/.hg/shamap" ||      \
+        err 1 "Pull of new history and SHA map restore failed." \
+              "$HGREPO requires MANUAL cleanup"
+    cat "${TMPLOG}" 1>&2
+    err 1 "Cannot pull new history into $HGREPO"
+fi
+
+# If PUSHREPO is set to a non-empty path, when we're done with the
+# conversion process push everything from HGREPO to PUSHREPO.
+# TODO(keramida): This process doesn't necessarily do anything about
+# authormap or shamap in the destination repository.  Find out if
+# there's a generic way of handling that (e.g. for bitbucket repos).
+if test -n "$PUSHREPO" ; then
+    debug "Pushing new history from $HGREPO to $PUSHREPO"
+
+    # If SSHKEY is set to a valid key-file, set up a custom ssh command
+    # that uses this key for connecting to the remote PUSHREPO.
+    # By 'valid' we mean that the file exists and a matching '.pub'
+    # public key exists, and they are both recognized by file(1) as ssh
+    # key files.  This is a relatively naive check, but it should work
+    # for most existing key files.
+    debug "Checking if ${SSHKEY} looks like a valid SSH key."
+    ssh_command=''
+    if test -f "${SSHKEY}" && test -f "${SSHKEY}.pub" &&
+        file "${SSHKEY}" 2>&1 | grep -qi '.*: .*private.*key' &&
+        file "${SSHKEY}.pub" 2>&1 | grep -qi '.*: .*public.*key'
+    then
+        debug "Enabling SSH key ${SSHKEY}"
+        ssh_command="ssh -i ${SSHKEY}"
+    fi
+
+    # Now that we have everything in place for the push, do it.
+    debug "Sending changesets over to $PUSHREPO"
+    hg -R "${HGREPO}"                                           \
+        push --ssh "${ssh_command}"                             \
+        "${PUSHREPO}"                                           \
+        > "${TMPLOG}" 2>&1
+    if test $? -ne 0 ; then
+        if grep -q 'no changes found' "${TMPLOG}" ; then
+            # No harm done; this is just a push that had no work
+            # to do and returned 1 from hg.
+            true
+        else
+            cat "${TMPLOG}" 1>&2
+            err 1 "Push from ${HGREPO} to ${PUSHREPO} failed."
+        fi
+    fi
+fi
+
+exit 0
+
+# vim: set ts=8 sts=4 sw=4 et: