Description
I upgraded the RN app on xwiki.org and one macro was failing. I discovered that EM had done an automatic merge and duplicated a line.
Context:
- RN app v1.0 was installed
- Later on RN XAR was imported to a newer version
- I upgraded to v1.4
Content from v1.0 extension:
{{velocity}} ## For final release notes, aggregate all changes from milestones and rcs. ## Use the page name to extract the version. The page has to be named using the short version syntax, e.g. "8.3M1" #set ($shortVersion = $doc.documentReference.parent.name) #set ($position = $shortVersion.indexOf('M')) #if ($position > -1) #set ($prefix = $shortVersion.substring(0, $position)) #set ($suffix = $shortVersion.substring($mathtool.add($position, 1))) #set ($versionsParameter = "${prefix}-milestone-${suffix}") #else #set ($position = $shortVersion.indexOf('RC')) #if ($position > -1) #set ($prefix = $shortVersion.substring(0, $position)) #set ($suffix = $shortVersion.substring($mathtool.add($position, 2))) #set ($versionsParameter = "${prefix}-rc-${suffix}") #else #set ($versionsParameter = "${shortVersion}%") #end #end == For Users == {{changes displayer="simple" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="user" containsScreenshots="true"/}} === Miscellaneous === {{changes displayer="list" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="user" containsScreenshots="false"/}} == For Admins == {{changes displayer="simple" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="administrator" containsScreenshots="true"/}} === Miscellaneous === {{changes displayer="list" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="administrator" containsScreenshots="false"/}} == For Developers == {{changes displayer="simple" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="developer" importance="Medium,High"/}} === Miscellaneous === {{changes displayer="list" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="Developer,developer" importance="Low"/}} {{/velocity}}
Content on xwiki.org before upgrading to v1.4
{{include reference="ReleaseNotes.Code.ChangesVelocityMacros"/}} {{velocity}} ## For final release notes, aggregate all changes from milestones and rcs. ## Use the page name to extract the version. The page has to be named using the short version syntax, e.g. "8.3M1" #set ($shortVersion = $doc.documentReference.parent.name) #set ($position = $shortVersion.indexOf('M')) #if ($position > -1) #set ($prefix = $shortVersion.substring(0, $position)) #set ($suffix = $shortVersion.substring($mathtool.add($position, 1))) #set ($versionsParameter = "${prefix}-milestone-${suffix}") #else #set ($position = $shortVersion.indexOf('RC')) #if ($position > -1) #set ($prefix = $shortVersion.substring(0, $position)) #set ($suffix = $shortVersion.substring($mathtool.add($position, 2))) #set ($versionsParameter = "${prefix}-rc-${suffix}") #else #set ($versionsParameter = "${shortVersion},${shortVersion}-milestone%,${shortVersion}-rc%") #end #end ## Extract product + version + released info from xobject #set ($topSpace = $doc.documentReference.extractFirstReference('SPACE').getName()) #set ($product = $!doc.getValue('product')) #set ($version = $!doc.getValue('version')) #set ($released = $!doc.getValue('released')) == For Users == #if ("$!request.action" == 'useradd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasAdmin &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="useradd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="user"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add User Change"/> </span> </form> {{/html}} #end {{changes displayer="simple" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="user" containsScreenshots="true"/}} === Miscellaneous === {{changes displayer="list" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="user" containsScreenshots="false"/}} == For Admins == #if ("$!request.action" == 'adminadd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasAdmin &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="adminadd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="administrator"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add Admin Change"/> </span> </form> {{/html}} #end {{changes displayer="simple" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="administrator" containsScreenshots="true"/}} === Miscellaneous === {{changes displayer="list" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="administrator" containsScreenshots="false"/}} == For Developers == #if ("$!request.action" == 'devadd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasAdmin &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="devadd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="developer"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add Developer Change"/> </span> </form> {{/html}} #end {{changes displayer="simple" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="developer" importance="Medium,High"/}} === Miscellaneous === {{changes displayer="list" displayEditLink="true" products="XWiki" versions="$versionsParameter" audience="Developer,developer" importance="Low"/}} {{/velocity}}
Content of v1.4 of the RN app:
{{include reference="ReleaseNotes.Code.ChangesVelocityMacros"/}} {{velocity}} ## For final release notes, aggregate all changes from milestones and rcs. ## Use the page name to extract the version. The page has to be named using the short version syntax, e.g. "8.3M1" #set ($shortVersion = $doc.documentReference.parent.name) #set ($position = $shortVersion.indexOf('M')) #if ($position > -1) #set ($prefix = $shortVersion.substring(0, $position)) #set ($suffix = $shortVersion.substring($mathtool.add($position, 1))) #set ($versionsParameter = "${prefix}-milestone-${suffix}") #else #set ($position = $shortVersion.indexOf('RC')) #if ($position > -1) #set ($prefix = $shortVersion.substring(0, $position)) #set ($suffix = $shortVersion.substring($mathtool.add($position, 2))) #set ($versionsParameter = "${prefix}-rc-${suffix}") #else #set ($versionsParameter = "${shortVersion},${shortVersion}-milestone%,${shortVersion}-rc%") #end #end ## Extract product + version + released info from xobject #set ($topSpace = $doc.documentReference.extractFirstReference('SPACE').getName()) #set ($product = $!doc.getValue('product')) #set ($version = $!doc.getValue('version')) #set ($released = $!doc.getValue('released')) == For Users == #if ("$!request.action" == 'useradd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasEdit &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="useradd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="user"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add User Change"/> </span> </form> {{/html}} #end {{/velocity}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="user" containsScreenshots="true" contextVariable="userChanges"/}} {{/velocity}} {{displayChanges displayer="simple" displayEditLink="true" contextVariable="userChanges"/}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="user" containsScreenshots="false" contextVariable="userMiscChanges"/}} {{/velocity}} {{velocity}} #if ($userMiscChanges.size() > 0) === Miscellaneous === {{displayChanges displayer="list" displayEditLink="true" contextVariable="userMiscChanges"/}} #end == For Admins == #if ("$!request.action" == 'adminadd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasEdit &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="adminadd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="administrator"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add Admin Change"/> </span> </form> {{/html}} #end {{/velocity}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="administrator" containsScreenshots="true" contextVariable="adminChanges"/}} {{/velocity}} {{displayChanges displayer="simple" displayEditLink="true" contextVariable="adminChanges"/}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="administrator" containsScreenshots="false" contextVariable="adminMiscChanges"/}} {{/velocity}} {{velocity}} #if ($adminMiscChanges.size() > 0) === Miscellaneous === {{displayChanges displayer="list" displayEditLink="true" contextVariable="adminMiscChanges"/}} #end == For Developers == #if ("$!request.action" == 'devadd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasEdit &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="devadd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="developer"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add Developer Change"/> </span> </form> {{/html}} #end {{/velocity}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="developer" importance="Medium,High" contextVariable="devChanges"/}} {{/velocity}} {{displayChanges displayer="simple" displayEditLink="true" contextVariable="devChanges"/}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="Developer,developer" importance="Low" contextVariable="devMiscChanges"/}} {{/velocity}} {{velocity}} #if ($devMiscChanges.size() > 0) === Miscellaneous === {{displayChanges displayer="list" displayEditLink="true" contextVariable="devMiscChanges"/}} #end {{/velocity}}
Content after upgrade:
{{include reference="ReleaseNotes.Code.ChangesVelocityMacros"/}} {{velocity}} ## For final release notes, aggregate all changes from milestones and rcs. ## Use the page name to extract the version. The page has to be named using the short version syntax, e.g. "8.3M1" #set ($shortVersion = $doc.documentReference.parent.name) #set ($position = $shortVersion.indexOf('M')) #if ($position > -1) #set ($prefix = $shortVersion.substring(0, $position)) #set ($suffix = $shortVersion.substring($mathtool.add($position, 1))) #set ($versionsParameter = "${prefix}-milestone-${suffix}") #else #set ($position = $shortVersion.indexOf('RC')) #if ($position > -1) #set ($prefix = $shortVersion.substring(0, $position)) #set ($suffix = $shortVersion.substring($mathtool.add($position, 2))) #set ($versionsParameter = "${prefix}-rc-${suffix}") #else #set ($versionsParameter = "${shortVersion},${shortVersion}-milestone%,${shortVersion}-rc%") #end #end ## Extract product + version + released info from xobject #set ($topSpace = $doc.documentReference.extractFirstReference('SPACE').getName()) #set ($product = $!doc.getValue('product')) #set ($version = $!doc.getValue('version')) #set ($released = $!doc.getValue('released')) == For Users == #if ("$!request.action" == 'useradd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasEdit &&$ $released != '1') #if ($hasAdmin &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="useradd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="user"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add User Change"/> </span> </form> {{/html}} #end {{/velocity}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="user" containsScreenshots="true" contextVariable="userChanges"/}} {{/velocity}} {{displayChanges displayer="simple" displayEditLink="true" contextVariable="userChanges"/}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="user" containsScreenshots="false" contextVariable="userMiscChanges"/}} {{/velocity}} {{velocity}} #if ($userMiscChanges.size() > 0) === Miscellaneous === {{displayChanges displayer="list" displayEditLink="true" contextVariable="userMiscChanges"/}} #end == For Admins == #if ("$!request.action" == 'adminadd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasEdit &&$ $released != '1') #if ($hasAdmin &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="adminadd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="administrator"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add Admin Change"/> </span> </form> {{/html}} #end {{/velocity}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="administrator" containsScreenshots="true" contextVariable="adminChanges"/}} {{/velocity}} {{displayChanges displayer="simple" displayEditLink="true" contextVariable="adminChanges"/}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="administrator" containsScreenshots="false" contextVariable="adminMiscChanges"/}} {{/velocity}} {{velocity}} #if ($adminMiscChanges.size() > 0) === Miscellaneous === {{displayChanges displayer="list" displayEditLink="true" contextVariable="adminMiscChanges"/}} #end == For Developers == #if ("$!request.action" == 'devadd') #handleAddAction($product, $version, "${request.queryString}&xredirect=$doc.getURL('view')") #end #if ($hasEdit &&$ $released != '1') #if ($hasAdmin &&$ $released != '1') {{html clean='false'}} <form> <input type="hidden" name="action" value="devadd"/> <input type="hidden" name="template" value="${topSpace}.Code.ChangesTemplate"/> <input type="hidden" name="product" value="$product"/> <input type="hidden" name="version" value="$version"/> <input type="hidden" name="audience" value="developer"/> <span class="buttonwrapper"> <input class="button" type="submit" value="Add Developer Change"/> </span> </form> {{/html}} #end {{/velocity}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="developer" importance="Medium,High" contextVariable="devChanges"/}} {{/velocity}} {{displayChanges displayer="simple" displayEditLink="true" contextVariable="devChanges"/}} {{velocity}} {{getChanges products="$product" versions="$versionsParameter" audience="Developer,developer" importance="Low" contextVariable="devMiscChanges"/}} {{/velocity}} {{velocity}} #if ($devMiscChanges.size() > 0) === Miscellaneous === {{displayChanges displayer="list" displayEditLink="true" contextVariable="devMiscChanges"/}} #end {{/velocity}}