<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://compusofia.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AGerrit</id>
	<title>Module:Gerrit - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://compusofia.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AGerrit"/>
	<link rel="alternate" type="text/html" href="https://compusofia.com/w/index.php?title=Module:Gerrit&amp;action=history"/>
	<updated>2026-04-23T08:51:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://compusofia.com/w/index.php?title=Module:Gerrit&amp;diff=2600&amp;oldid=prev</id>
		<title>Majestix: 1 revision imported: Initial Setup</title>
		<link rel="alternate" type="text/html" href="https://compusofia.com/w/index.php?title=Module:Gerrit&amp;diff=2600&amp;oldid=prev"/>
		<updated>2026-04-12T06:47:44Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported: Initial Setup&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:47, 12 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikiNonStop:diff:1.41:old-2599:rev-2600 --&gt;
&lt;/table&gt;</summary>
		<author><name>Majestix</name></author>
	</entry>
	<entry>
		<id>https://compusofia.com/w/index.php?title=Module:Gerrit&amp;diff=2599&amp;oldid=prev</id>
		<title>en&gt;94rain: Protected &quot;Module:Gerrit&quot;: Highly visible page or template: 6834 transclusions ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://compusofia.com/w/index.php?title=Module:Gerrit&amp;diff=2599&amp;oldid=prev"/>
		<updated>2023-11-28T21:36:22Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/wiki/Module:Gerrit&quot; title=&quot;Module:Gerrit&quot;&gt;Module:Gerrit&lt;/a&gt;&amp;quot;: Highly visible page or template: 6834 transclusions ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local UrlEncoding = require( &amp;#039;Module:UrlEncoding&amp;#039; )&lt;br /&gt;
local encode = UrlEncoding._encode&lt;br /&gt;
&lt;br /&gt;
local link_to_gerrit = function ( target, text )&lt;br /&gt;
	if text == nil then&lt;br /&gt;
		text = target&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;#039;[[:gerrit:&amp;#039; .. target .. &amp;#039;|&amp;#039; .. text .. &amp;#039;]]&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local link_to_gerrit_number = function ( number )&lt;br /&gt;
	return link_to_gerrit( number, &amp;#039;Gerrit change &amp;#039; .. number )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local link_to_gerrit_search = function ( search, text )&lt;br /&gt;
	if text == nil then&lt;br /&gt;
		text = &amp;#039;Search Gerrit for &amp;#039; .. search&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return link_to_gerrit( &amp;#039;q/&amp;#039; .. search, text )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local link_to_gerrit_id = function ( id )&lt;br /&gt;
	return link_to_gerrit_search( id, &amp;#039;Gerrit #&amp;#039; .. string.sub( id, 0, 7 ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local link_to_gerrit_constraints = function ( constraints, searchstr, text )&lt;br /&gt;
	local searchlist = {}&lt;br /&gt;
	local linktextlist = {}&lt;br /&gt;
&lt;br /&gt;
	if searchstr ~= nil and searchstr ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		table.insert( searchlist, searchstr )&lt;br /&gt;
		table.insert( linktextlist, &amp;#039;which mention &amp;#039; .. searchstr )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if constraints.owner ~= nil and constraints.owner ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		table.insert( searchlist, &amp;#039;owner:&amp;#039; .. encode( constraints.owner ) )&lt;br /&gt;
		table.insert( linktextlist, &amp;#039;with owner &amp;#039; .. constraints.owner )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if constraints.project ~= nil and constraints.project ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		table.insert( searchlist, &amp;#039;project:&amp;#039; .. encode( constraints.project ) )&lt;br /&gt;
		table.insert( linktextlist, &amp;#039;in project &amp;#039; .. constraints.project )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if constraints.status ~= nil and constraints.status ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		table.insert( searchlist, &amp;#039;status:&amp;#039; .. encode( constraints.status ) )&lt;br /&gt;
		table.insert( linktextlist, constraints.status )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if constraints.ownerin ~= nil and constraints.ownerin ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		table.insert( searchlist, &amp;#039;ownerin:&amp;#039; .. encode( constraints.ownerin ) )&lt;br /&gt;
		table.insert( linktextlist, &amp;#039;owner in group &amp;#039; .. constraints.ownerin )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if constraints.message ~= nil and constraints.message ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		table.insert( searchlist, &amp;#039;message:&amp;#039; .. encode( constraints.message ) )&lt;br /&gt;
		table.insert( linktextlist, &amp;#039;message contains &amp;#039; .. constraints.message )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if text == nil then&lt;br /&gt;
		text = mw.text.listToText( linktextlist )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return link_to_gerrit_search( table.concat( searchlist, &amp;#039;+&amp;#039; ), text )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Test:&lt;br /&gt;
--&lt;br /&gt;
--     mw.log(p._link_to_paths( &amp;#039;mediawiki/core&amp;#039;, &amp;#039;includes/libs/rdbms,includes/db&amp;#039;))&lt;br /&gt;
--&lt;br /&gt;
-- Output:&lt;br /&gt;
--&lt;br /&gt;
--     https://gerrit.wikimedia.org/r/q/project:mediawiki/core+(path:^includes/libs/rdbms.*+OR+path:^includes/db.*)+is:merged&lt;br /&gt;
--&lt;br /&gt;
local link_to_paths = function ( repo, paths )&lt;br /&gt;
	local base = &amp;#039;https://gerrit.wikimedia.org/r/q/&amp;#039;&lt;br /&gt;
	local query = &amp;#039;project:&amp;#039; .. repo&lt;br /&gt;
	local pathQuery = {}&lt;br /&gt;
	paths = mw.text.gsplit( paths, &amp;#039;,&amp;#039;, true )&lt;br /&gt;
	for path in paths do&lt;br /&gt;
		table.insert(pathQuery, &amp;#039;path:^&amp;#039; .. path .. &amp;#039;.*&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	query = query .. &amp;#039; (&amp;#039; .. table.concat(pathQuery, &amp;#039; OR &amp;#039;) .. &amp;#039;)&amp;#039;&lt;br /&gt;
	query = query .. &amp;#039; is:merged&amp;#039;&lt;br /&gt;
	local url = base .. encode( query )&lt;br /&gt;
	return url&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	_link_to_gerrit = link_to_gerrit,&lt;br /&gt;
	_link_to_gerrit_number = link_to_gerrit_number,&lt;br /&gt;
	_link_to_gerrit_search = link_to_gerrit_search,&lt;br /&gt;
	_link_to_gerrit_constraints = link_to_gerrit_constraints,&lt;br /&gt;
	_link_to_paths = link_to_paths,&lt;br /&gt;
&lt;br /&gt;
	link_to_paths = function ( frame )&lt;br /&gt;
		return link_to_paths( frame.args.repo, frame.args.paths )&lt;br /&gt;
	end,&lt;br /&gt;
	link_automatic = function ( frame )&lt;br /&gt;
		local suspect, changenum_match, changeid_match, retval&lt;br /&gt;
		suspect = frame.args[1]&lt;br /&gt;
&lt;br /&gt;
		if suspect ~= nil then&lt;br /&gt;
			changenum_match = string.match( suspect, &amp;#039;%d+&amp;#039; )&lt;br /&gt;
			changeid_match = string.match( suspect, &amp;#039;I%x+&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if changeid_match ~= nil then&lt;br /&gt;
			return link_to_gerrit_id( changeid_match )&lt;br /&gt;
		elseif changenum_match ~= nil then&lt;br /&gt;
			return link_to_gerrit_number( changenum_match )&lt;br /&gt;
		elseif frame.args.owner ~= nil or frame.args.project ~= nil or frame.args.status ~= nil or frame.args.ownerin ~= nil or frame.args.message ~= nil then&lt;br /&gt;
			return link_to_gerrit_constraints( frame.args, suspect, frame.args.text )&lt;br /&gt;
		else&lt;br /&gt;
			return link_to_gerrit_search( encode( suspect ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>en&gt;94rain</name></author>
	</entry>
</feed>