From patchwork Fri Dec 22 14:40:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2,of,2,V2] hgweb: link to successors of obsoleted changesets From: Anton Shestakov X-Patchwork-Id: 26400 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Fri, 22 Dec 2017 22:40:16 +0800 # HG changeset patch # User Anton Shestakov # Date 1513949146 -28800 # Fri Dec 22 21:25:46 2017 +0800 # Node ID c2befc8a84ac898e1b451b38ec6a6fe702966517 # Parent d3211cd1ef5ed1f5a50d49af800155271ad3861e # EXP-Topic hgweb-more-info hgweb: link to successors of obsoleted changesets _siblings() prepare various useful properties to use in templates. This function usually prepares parents and children of changesets for use in hgweb templates, but it can be used for successors too. It's needed because item['successors'] is a _hybrid object that works well when used in regular templates, but in hgweb templates work slightly differently and can't get hex nodes of the successors, which are required for these links to work. diff --git a/mercurial/hgweb/webutil.py b/mercurial/hgweb/webutil.py --- a/mercurial/hgweb/webutil.py +++ b/mercurial/hgweb/webutil.py @@ -353,7 +353,10 @@ def formatlinerange(fromline, toline): return '%d:%d' % (fromline + 1, toline) def succsandmarkers(repo, ctx): - return templatekw.showsuccsandmarkers(repo, ctx) + for item in templatekw.showsuccsandmarkers(repo, ctx): + item['successors'] = _siblings(repo[successor] + for successor in item['successors']) + yield item def commonentry(repo, ctx): node = ctx.node() diff --git a/mercurial/templates/gitweb/map b/mercurial/templates/gitweb/map --- a/mercurial/templates/gitweb/map +++ b/mercurial/templates/gitweb/map @@ -271,7 +271,8 @@ branchtag = '{name|escape} ' bookmarktag = '{name|escape} ' alltags = '{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}' -obsfatesuccessors = '{if(successors, ' as ')}{join(successors, ', ')}' +successorlink = '{node|short} ' +obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}' obsfateverb = '{obsfateverb(successors, markers)}' obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}' obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}' diff --git a/mercurial/templates/paper/map b/mercurial/templates/paper/map --- a/mercurial/templates/paper/map +++ b/mercurial/templates/paper/map @@ -209,7 +209,8 @@ changelogbranchhead = '{name|escape} ' alltags = '{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{bookmarks%changelogtag}' -obsfatesuccessors = '{if(successors, ' as ')}{join(successors, ', ')}' +successorlink = '{node|short} ' +obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}' obsfateverb = '{obsfateverb(successors, markers)}' obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}' obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}' diff --git a/mercurial/templates/spartan/map b/mercurial/templates/spartan/map --- a/mercurial/templates/spartan/map +++ b/mercurial/templates/spartan/map @@ -166,7 +166,8 @@ branchentry = ' diffblock = '
{lines}
' changelogtag = 'tag:{tag|escape}' changesettag = 'tag:{tag|escape}' -obsfatesuccessors = '{if(successors, ' as ')}{join(successors, ', ')}' +successorlink = '{node|short} ' +obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}' obsfateverb = '{obsfateverb(successors, markers)}' obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}' obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}' diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t --- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -1036,15 +1036,15 @@ check obsolete changeset check an obsolete changeset that has been rewritten $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=paper' | grep rewritten - rewritten as 6:3de5eca88c00 + rewritten as 3de5eca88c00 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=coal' | grep rewritten - rewritten as 6:3de5eca88c00 + rewritten as 3de5eca88c00 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=gitweb' | grep rewritten - obsoleterewritten as 6:3de5eca88c00 + obsoleterewritten as 3de5eca88c00 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=monoblue' | grep rewritten -
obsolete
rewritten as 6:3de5eca88c00
+
obsolete
rewritten as 3de5eca88c00
$ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=spartan' | grep rewritten - rewritten as 6:3de5eca88c00 + rewritten as 3de5eca88c00 check changeset with instabilities