duplicate dt sections cause duplicate anchor tags to be generated breaking linking
URL for broken page
https://git-scm.com/docs/merge-strategies#Documentation/merge-strategies.txt-ours
Problem
There are two or more dt elements on the page with the same ID each one generates an anchor link that collides.
The following generated docs all had colliding link generation (which are now all fixed with this CL)
collision for Documentation/diff-options.txt-no
collision for Documentation/diff-options.txt-plain
collision for Documentation/git-cherry-pick.txt-codegitcherry-pickmastercode
collision for Documentation/git-config.txt-codecolumncode
collision for Documentation/git-diff-files.txt-no
collision for Documentation/git-diff-files.txt-plain
collision for Documentation/git-diff-index.txt-no
collision for Documentation/git-diff-index.txt-plain
collision for Documentation/git-diff-tree.txt-no
collision for Documentation/git-diff-tree.txt-plain
collision for Documentation/git-diff-tree.txt--s
collision for Documentation/git-diff.txt-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203
collision for Documentation/git-diff.txt-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203
collision for Documentation/git-diff.txt-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203-1
collision for Documentation/git-diff.txt-no
collision for Documentation/git-diff.txt-plain
collision for Documentation/git-fast-import.txt-Externaldataformat
collision for Documentation/git-fast-import.txt-Inlinedataformat
collision for Documentation/git-fetch.txt-codecode
collision for Documentation/git-fetch.txt-codecode
collision for Documentation/git-fetch.txt-codecode-1
collision for Documentation/git-fetch.txt-codecode
collision for Documentation/git-fetch.txt-codecode-1
collision for Documentation/git-fetch.txt-codecode-1-1
collision for Documentation/git-log.txt-Defaultmode
collision for Documentation/git-log.txt---dense
collision for Documentation/git-log.txt---sparse
collision for Documentation/git-log.txt---simplify-merges
collision for Documentation/git-log.txt---ancestry-path
collision for Documentation/git-log.txt-no
collision for Documentation/git-log.txt-plain
collision for Documentation/git-merge.txt-ours
collision for Documentation/git-p4.txt---import-labels
collision for Documentation/git-pull.txt-ours
collision for Documentation/git-push.txt-codecode
collision for Documentation/git-push.txt-codecode
collision for Documentation/git-push.txt-codecode-1
collision for Documentation/git-push.txt-codecode
collision for Documentation/git-push.txt-codecode-1
collision for Documentation/git-push.txt-codecode-1-1
collision for Documentation/git-push.txt-codegitpushorigincode
collision for Documentation/git-rebase.txt-ours
collision for Documentation/git-rev-list.txt-Defaultmode
collision for Documentation/git-rev-list.txt---dense
collision for Documentation/git-rev-list.txt---sparse
collision for Documentation/git-rev-list.txt---simplify-merges
collision for Documentation/git-rev-list.txt---ancestry-path
collision for Documentation/git-rev-parse.txt-emltrevgtem
collision for Documentation/git-rev-parse.txt-emltrev1gtltrev2gtem
collision for Documentation/git-rev-parse.txt-emltrevgtemegemHEADem
collision for Documentation/git-show.txt-no
collision for Documentation/git-show.txt-plain
collision for Documentation/git-svn.txt---ignore-refsltregexgt
collision for Documentation/git-svn.txt---ignore-pathsltregexgt
collision for Documentation/git-svn.txt---include-pathsltregexgt
collision for Documentation/git-svn.txt---parent
collision for Documentation/git-svn.txt--m
collision for Documentation/git-svn.txt--p
collision for Documentation/git-update-index.txt---cacheinfoltmodegtltobjectgtltpathgt
collision for Documentation/gitattributes.txt-Set
collision for Documentation/gitattributes.txt-Unset
collision for Documentation/gitattributes.txt-Unspecified
collision for Documentation/gitattributes.txt-Set
collision for Documentation/gitattributes.txt-Set-1
collision for Documentation/gitattributes.txt-Unset
collision for Documentation/gitattributes.txt-Unset-1
collision for Documentation/gitattributes.txt-Unspecified
collision for Documentation/gitattributes.txt-Unspecified-1
collision for Documentation/gitattributes.txt-Set
collision for Documentation/gitattributes.txt-Set-1
collision for Documentation/gitattributes.txt-Set-1-1
collision for Documentation/gitattributes.txt-Unset
collision for Documentation/gitattributes.txt-Unset-1
collision for Documentation/gitattributes.txt-Unset-1-1
collision for Documentation/gitattributes.txt-Unspecified
collision for Documentation/gitattributes.txt-Unspecified-1
collision for Documentation/gitattributes.txt-Unspecified-1-1
collision for Documentation/gitattributes.txt-String
collision for Documentation/gitattributes.txt-Set
collision for Documentation/gitattributes.txt-Set-1
collision for Documentation/gitattributes.txt-Set-1-1
collision for Documentation/gitattributes.txt-Set-1-1-1
collision for Documentation/gitattributes.txt-Unset
collision for Documentation/gitattributes.txt-Unset-1
collision for Documentation/gitattributes.txt-Unset-1-1
collision for Documentation/gitattributes.txt-Unset-1-1-1
collision for Documentation/gitattributes.txt-Unspecified
collision for Documentation/gitattributes.txt-Unspecified-1
collision for Documentation/gitattributes.txt-Unspecified-1-1
collision for Documentation/gitattributes.txt-Unspecified-1-1-1
collision for Documentation/gitattributes.txt-String
collision for Documentation/gitattributes.txt-String-1
collision for Documentation/gitremote-helpers.txt-emconnectem
collision for Documentation/gitremote-helpers.txt-emstateless-connectem
collision for Documentation/gitremote-helpers.txt-emexportem
collision for Documentation/gitrevisions.txt-emltrevgtem
collision for Documentation/gitrevisions.txt-emltrev1gtltrev2gtem
collision for Documentation/gitrevisions.txt-emltrevgtemegemHEADem
collision for Documentation/merge-strategies.txt-ours
collision for Documentation/rev-list-options.txt-Defaultmode
collision for Documentation/rev-list-options.txt---dense
collision for Documentation/rev-list-options.txt---sparse
collision for Documentation/rev-list-options.txt---simplify-merges
collision for Documentation/rev-list-options.txt---ancestry-path
collision for Documentation/revisions.txt-emltrevgtem
collision for Documentation/revisions.txt-emltrev1gtltrev2gtem
collision for Documentation/revisions.txt-emltrevgtemegemHEADem
collision for Documentation/technical/api-remote.txt-codenamecode
collision for Documentation/technical/api-trace2.txt-codeltevent-namegtcode
#Documentation/merge-strategies.txt-ours
Operating system and browser
all
Steps to reproduce
visit the page click on the second ours section, reload the page, notice you are scrolled to the first ours section on the page.
Verification / testing steps
version=v2.23.0
GIT_REPO=../git/.git REBUILD_DOC=$version rake local_index | grep collision > collisions.txt
./script/server
curl http://localhost:5000/docs/merge-strategies | grep merge-strategies.txt-ours
Expected output when diffing vs the code before this fix:
<dt class="hdlist1" id="Documentation/merge-strategies.txt-ours"> <a class="anchor" href="#Documentation/merge-strategies.txt-ours"></a>ours </dt>
+<dt class="hdlist1" id="Documentation/merge-strategies.txt-ours-1"> <a class="anchor" href="#Documentation/merge-strategies.txt-ours-1"></a>ours </dt>
-<dt class="hdlist1" id="Documentation/merge-strategies.txt-ours"> <a class="anchor" href="#Documentation/merge-strategies.txt-ours"></a>ours </dt>
_
Further digging shows that this is a somewhat known problem https://github.com/asciidoctor/asciidoctor/issues/3147
The solution implemented here only works inside of index_l10n_doc which means for all non-internationalized docs the headers will still collide.
The change has been updated to now account for both codepaths!
Merged, marking as fixed.
curl https://git-scm.com/docs/merge-strategies | grep merge-strategies.txt-ours
<dt class="hdlist1" id="Documentation/merge-strategies.txt-ours"> <a class="anchor" href="#Documentation/merge-strategies.txt-ours"></a>ours </dt>
<dt class="hdlist1" id="Documentation/merge-strategies.txt-ours"> <a class="anchor" href="#Documentation/merge-strategies.txt-ours"></a>ours </dt>
Shows that this has not been deployed - @pedrorijo91 please let me know if there is anything else needed on my side*.
i think the documentation page is not re-generated frequently, when only new versions are out. can you confirm @peff ?
we can probably force re-generation of all documentation...
Yes, the scheduled rebuilds are dependent only on new content in the upstream repository. If the actual import code changes, somebody has to kick off heroku run rake preindex RERUN=1. I just did that. It will take a while to finish, plus there's a caching layer in front of the site that may take up to 4 hours to time out.
OK, the build is done, and just because I'm impatient, I purged the cloudflare cache. You should be able to see the new anchors on the site now.
Thanks all for your help on getting this fixed. I confirmed all anchor tags are now distinct on the page (from headers) a few months ago but looks like I did not close :D. Closing now, thanks again!