Commits for braney
switch to files view, user index
v502_preview2 to v502_base (2026-08-04 to 2026-08-10) v502
Show details
98ac3822afa0712f1897d17e5b7934c4aa742f57 Tue Aug 4 17:11:00 2026 -0700
- hgConfCatalog: report only the gates that changed this release, and settle the gate/knob calls, refs #37925
Groundwork for running the sunset report from the weekly build's wrap-up.
--sunset prints the whole standing list every run, which reads as a worklist
the first week and as wallpaper by the third. New --sunset-new reports only
the gates that went overdue or stalled since hgConfGateBacklog.txt was last
accepted, plus the ones that were cleaned up, and exits 1 when there is
something new, the same contract --reconcile already has. --update-baseline
accepts the current state, so the file's diff becomes the release-to-release
history of the backlog. Gates already in the backlog are marked in --sunset
too, so an unmarked row there is one this release created.
Settled all eleven gate-or-knob calls that were filed debatable, each by
reading the call site. forceTwoBit, freeType, sleepOn429 and trustTrackDb
become knobs: what their off position describes is where a machine keeps its
sequence, whether it has the URW fonts, whether it wants to hold a process
after a 429, and whether its trackDb can be trusted. Three of those were on
the overdue list, so the report was telling somebody to delete flags that
should stay. autoBlatBigPsl becomes a gate: its default is the file-scope
autoBigPsl, initialised FALSE under the comment "DEFAULT VALUE change to TRUE
in future", and a flag whose own source says to flip it later is not a
permanent switch. alwaysItemRgb and blatNewPageBanner stay gates, and
hgHubConnect.validateHub stays a gate with its note corrected: it gates the
Hub Development tab, not validation on attach. Overdue is 18 down to 15.
Added a fourth reconcile question: does each flag's hand-written default still
match the tree's. That field is the one part of a gate's lifecycle not read
out of git, and gate_lifecycle decides a gate has shipped from it alone, so a
flag flipped TRUE in code without the row updated sat in the stalled list
under a heading telling somebody to turn on a flag that was already on. Zero
mismatches today. A flag read with both TRUE and FALSE as its compiled-in
default is reported under --verbose rather than counted as a problem, since
the fix belongs to whoever owns the code: multiRegionButtonTop is read TRUE at
hgTracks.c:9126 and FALSE at config.c:990, so on a default install the button
is in the top bar while the checkbox the same flag guards is hidden.
The age cache is overridable with --cache or HGCONF_AGE_CACHE, and
hgConfCatalog.py takes --refresh, so an automated run can rebuild it without
writing into a git checkout. Refreshed the committed cache, which dates
blatNewPageBanner and showLiftRequest: both were added after it was last
built, which is why they read as undatable. Documented forceTwoBit and
freeType in ex.hg.conf, since calling them mirror knobs and leaving them
undiscoverable is the same mistake in the other direction.
- src/hg/utils/hgConfCatalog/harvestHgConf.py - lines changed 36, context: html, text, full: html, text
- src/hg/utils/hgConfCatalog/hgConfAges.json - lines changed 57, context: html, text, full: html, text
- src/hg/utils/hgConfCatalog/hgConfCatalog.py - lines changed 447, context: html, text, full: html, text
- src/hg/utils/hgConfCatalog/hgConfGateBacklog.txt - lines changed 41, context: html, text, full: html, text
- src/product/ex.hg.conf - lines changed 12, context: html, text, full: html, text
74dc80fd3bd2a70371fa75218347ddc45a556dde Wed Aug 5 07:28:59 2026 -0700
- Docent: render a tour at print resolution, and make zoom wait for its redraw
refs #37892
scale: k (DOCENT_SCALE=k, make hires [SCALE=3]) renders the same tour with k
times the pixels, for figures that have to print -- a screen still is about
120 dpi across a journal column. Nothing is upscaled; each layer that draws is
asked for more:
* deviceScaleFactor: k with the viewport left at its 1x CSS size, so the page
lays out exactly as at 1x -- same line breaks, same jQuery-dialog width, same
tooltip placement -- and rasterizes with k times the pixels,
* pix x k so the server draws a wider browser image, with textSize stepped up
its ladder to match (3x lands on 24) so hgTracks makes the same layout
decisions in it: same tick spacing, same room for labels, same packing of
features into rows,
* zoom: 1/k on the image table, handing that wider image the 1x amount of
layout space, so one image pixel falls on one device pixel.
A scaled run is stills-only (no mp4), and DOCENT_STILLS names a different parent
so a print render lands beside the screen stills instead of over them.
Everything hgTracks reports about the image -- map-box coords, mouseOver spans,
insideX, a px: drag endpoint -- is in the pixels the SERVER drew, which is not
the displayed size once the image is scaled. Those now go through the image's
natural-to-displayed ratio (1 at 1x). Without it a named mouseover: lands k
times off and pins a different feature.
zoom: in|out waited only for #imgTbl, which the buttons never remove (they
redraw in place via ajax), so the following step could read the previous
window's map boxes and report an item "not found" that was simply not in view
yet. It now waits for the window itself to change. Pre-existing, hidden by the
dwell that FAST removes -- and every hires run is FAST. An item-not-found error
also names the current window and the items that ARE in that row, which is what
told the two cases apart.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/utils/docent/README.md - lines changed 46, context: html, text, full: html, text
- src/hg/utils/docent/docent.js - lines changed 143, context: html, text, full: html, text
- src/hg/utils/docent/docent.mk - lines changed 20, context: html, text, full: html, text
1ffe5f2fad53035d54f7b37c4da55b1767ec4d62 Wed Aug 5 10:15:26 2026 -0700
- hgConfCatalog: keep the file:line citations true and register new settings without asking a developer, refs #37925
Code review caught autoBlatBigPsl's row citing hgBlat.c:2629, an unrelated
function, while the note in that same row already named the real read at 2972.
Sweeping every citation, with the CFG_ and #define indirection resolved so a
macro-spelled read is not a false positive, found 66 of the 269 line-cited rows
pointing at the wrong line. They cluster by file (+343 across hgBlat.c, +11
across hgTracks.c, +2 across hdb.c), so this was the tree moving under the
catalog rather than anybody mistyping. All 66 now match a site the harvester
finds on its own. Rows whose citation opens a multi-line cfgOptionEnvDefault
call were already correct and are untouched, as are the four whose only literal
lives in a #define.
reconcile() grows a fifth check so this cannot drift again, and --fix-citations
repairs what it finds: line drift prints a count and the command, while a read
that has left its cited file lists the rows, because choosing among call sites
needs a person.
--auto-register writes a row for any setting the tree reads that the catalog
lacks. The developer who adds an hg.conf read should not have to know this
catalog exists, and asking them to had not worked: hubSpaceLockTimeout arrived
as one supporting line inside an unrelated bugfix and nothing noticed until
--reconcile was run by hand a day later. It copies only what the call itself
states, plus the introducing commit and ticket read out of git, and refuses
every judgement. role= in particular is left unset on purpose: calling a
release gate a knob would hide it from the sunset report for good, and calling
a knob a gate would feed fiction into the overdue arithmetic. Rows land in a
new "Awaiting review" section, which --reconcile counts as needing attention
until somebody classifies them, so the silence is bought for the developer and
not for us.
nightlyRegister.sh runs both passes nightly and commits. It works in the
weekly build's own tree, so it acts only on master (cherryPickCommits.csh and
tagBeta.csh both check out release branches in there), never leaves the tree
dirty for ensure_clean_git() to abort on, stands aside while
/tmp/autoBuild.lock is held, and throws its own commit away rather than leave
one unpushed if the push is rejected.
hubSpaceLockTimeout is classified here as well: a limit, 300 seconds by
default, bounding the flock poll in lockHubDir.
- src/hg/utils/hgConfCatalog/hgConfCatalog.py - lines changed 452, context: html, text, full: html, text
- src/hg/utils/hgConfCatalog/nightlyRegister.sh - lines changed 173, context: html, text, full: html, text
3ea2ef2ddf64b7e366af1e8c0e500ea1fe88a4e6 Wed Aug 5 10:55:25 2026 -0700
- gwEditPage: read and write genomewiki page text from the command line
gwUploadFile next door handles images, but it needs python2 and mwclient,
neither of which is installed for python3 on hgwdev, and nothing in the tree
could edit page text at all. This talks to the MediaWiki API with the standard
library alone.
The trap it exists to document: two wikis run behind genomewiki.ucsc.edu, the
public one at / and the internal Genecats one at /genecats, and they keep
separate user databases. An account that works on one may not exist on the
other, so the failure reads like a mistyped password when it is really the wrong
wiki. Credentials keep gwUploadFile's ~/.gwLogin convention, one line and mode
600, with ~/.gwLogin.genecats for the internal wiki so the first line of
~/.gwLogin stays exactly what gwUploadFile expects to find. A bot password from
Special:BotPasswords works in place of an account password and is preferable:
scoped to the grants chosen, and revocable on its own.
get prints wikitext and put replaces it, requiring a summary and refusing to
write an empty page. --dry-run shows the diff and writes nothing, which is
worth the habit: it caught two wiki-markup mistakes on its first real use, a
blank line between list items ending the list, and text appended past the
Category tags landing outside the section it belonged to. Reading needs no
account on either wiki, so it does not ask for one.
- src/hg/utils/automation/gwEditPage - lines changed 189, context: html, text, full: html, text
9ea569dd7b6b5f189bd5bec3cebc37ab95cb88fb Wed Aug 5 10:55:33 2026 -0700
- autoBuild.sh: note that something else writes to the build tree now, refs #37925
nightlyRegister.sh runs from the build account's crontab and commits and pushes
hgConfCatalog.py out of $BUILDHOME/kent, so "hgConfCatalog: register ..."
commits appearing on master with nobody behind them are expected rather than a
stray edit somebody left in the tree.
The note sits at ensure_clean_git() rather than in the header because that is
the function whose failure would be puzzling: it aborts the whole build on any
uncommitted change in that tree. The writer is built not to trip it, acting
only when HEAD is master (cherryPickCommits.csh and tagBeta.csh both check out
release branches in there), restoring the file on any exit that did not commit,
and standing aside entirely while the lockfile is held. The note says what to
do in the one case where it does trip: the script died between writing and
committing, git checkout is the whole fix, and the next run redoes the work.
Also written up on the CGI_Build_Process wiki page, under "The build tree has a
second writer".
- src/utils/qa/weeklybld/autoBuild.sh - lines changed 15, context: html, text, full: html, text
9e183778db2595f86065c84518a68f4490c7b375 Wed Aug 5 11:03:35 2026 -0700
- nightlyRegister.sh: say one line every night while this job is still new, refs #37925
A job that only speaks up when something is wrong is a job nobody notices has
died. This one was written to be quiet on a clean night, which is right for the
long run and wrong for its first weeks, when the failure nobody would catch is
the cron never running at all.
So it now emits one line per run, whatever happened, carrying enough state to be
worth reading rather than being a bare pulse:
2026-08-05 03:30 nothing to register, 0 awaiting classification, tree at a74f3a3
The same line is appended to $WEEKLYBLD/logs/hgConfRegister.history, the build's
own untracked log directory. The mail is what keeps the job in mind; the history
outlives the mail, so a gap in the dates shows when it stopped. Set
HGCONF_NIGHTLY_HEARTBEAT=no in the crontab once the mail is boring and the
history keeps going without it. A failure records its own line, so a run that
died is distinguishable from one that never happened.
The skip paths beat as well, which matters more than the ordinary nights: until
now "a build is running" and "the tree is on v501_branch" both exited in total
silence, which is indistinguishable from a dead cron during precisely the week
nobody wants to be wondering.
Counts come from the --reconcile that already runs after the writes, so the
awaiting-classification figure includes anything registered the same night
rather than lagging a day behind.
- src/hg/utils/hgConfCatalog/nightlyRegister.sh - lines changed 51, context: html, text, full: html, text
140e29ae6894cc8d55bb231e73e7a16f7e51a146 Wed Aug 5 14:20:32 2026 -0700
- Docent: keep a print render's tooltips and track heights in proportion
Two things stayed 1x in a 3x still. hgTracks takes the tooltip's font-size from
the browser text size, which a scaled run has already multiplied by k for the
image, and then the device pixel ratio scales that same text a second time -- so
the popups came out k times too big, swamping the figure, and the last tooltip
pinned fell off the crop. Pin the tooltip font-size back to the 1x value.
The other is height. Neither pix nor textSize reaches a track whose height is a
fixed pixel count, so a 128px bigLolly row that was 15% of an 850px image was 5%
of a 2550px one -- ClinVar's lollipop row came out a sliver with unreadable
y-axis labels next to a bed track that had grown with the font. After each view
change, ask for k times the height of every row the page actually drew. Going
by the drawn names is what reaches a lifted view, whose tracks are hub tracks
under names trackDb never saw. Each track's own maxHeightPixels still clamps
the request, so a track that should stay short does.
refs #37892
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/utils/docent/README.md - lines changed 14, context: html, text, full: html, text
- src/hg/utils/docent/docent.js - lines changed 52, context: html, text, full: html, text
f066bc4cf3adb12de8d6c65f41b47c2e463ed27e Thu Aug 6 10:07:24 2026 -0700
- hgConfCatalog: escape what the auto-writer splices, and count the right rows, refs #37925
Two things a code review caught in the nightly job, neither of which had gone
wrong yet and both of which would have gone wrong quietly.
--auto-register writes Python into this file and the file is imported again the
next time anything runs, so free-form text in a generated row has to survive
being a string literal. Most of it does; the git commit subject does not. A
subject that quotes a setting name, which is an ordinary thing to write, would
put a bare " in the row and break every import of the catalog tree-wide, and it
would land on master unreviewed because running unattended is the whole point.
Escape the backslashes and quotes and drop the control characters on the way in.
The note is wrapped before it is escaped so the added backslashes, which nobody
reads, do not push a line over.
The heartbeat's "awaiting classification" number came from reconcile's aggregate
problems: total, which also counts wrong hand-written defaults and citations
whose call site left the file. Right now the tree has seven drifted citations
and an empty holding pen, so tonight's line would have claimed seven settings
were waiting on somebody when none were. Read the count off the "written down
but not classified" line instead. A heartbeat exists to be believed later by
somebody skimming the history file, and a wrong number there is worse than none.
- src/hg/utils/hgConfCatalog/hgConfCatalog.py - lines changed 21, context: html, text, full: html, text
- src/hg/utils/hgConfCatalog/nightlyRegister.sh - lines changed 8, context: html, text, full: html, text
babf25e13ff2e01e1f2a3c295f7b84420d3de421 Thu Aug 6 10:07:35 2026 -0700
- Docent: say which height the print scaling actually scales, refs #37892
The k*128 a scaled run asks for is the default heightPer times k, not each
track's own height times k, so a row deliberately configured at 50px or 300px
comes back the same size as everything else instead of in proportion. Every
track a tour has used took the default, so this has not bitten, and fixing it
properly means reading each row's heightPer out of the cart before asking for k
times it. Write down the assumption and what the symptom looks like -- a row
that is the wrong size at k and the right size at 1x -- so the next person to
hit it knows where to look rather than rediscovering the constant.
- src/hg/utils/docent/docent.js - lines changed 6, context: html, text, full: html, text
3b13914cf3079b1c2211f14d5295558c5e4d3cc7 Thu Aug 6 10:08:04 2026 -0700
- hgConfCatalog: refresh the file:line citations, refs #37925
Seven rows in hg/hgLogin/hgLogin.c drifted when the OIDC provider and
login.emailLink work inserted lines above them: six by one line, pwdEyeIcon by
five. Nothing about the settings changed, and hgLogin.c:81 just landed on a
bare brace instead of the cfgOption call the row names. Written by
hgConfCatalog.py --fix-citations, which only moves a line number onto the read
the row already cites. The nightly job would have done this on its own; doing
it here gets the count out of reconcile's problem total.
- src/hg/utils/hgConfCatalog/hgConfCatalog.py - lines changed 7, context: html, text, full: html, text
ffccd9cceb44efbd4d07dab8eda90e95ccd72d77 Thu Aug 6 13:45:12 2026 -0700
- Docent: pinned-mouseover cursors, and a montage verb for multi-panel figures, refs #37892
A pinShot puts several tooltips on one still, but nothing in the picture says
which feature each was raised from -- the reader infers it from an 8px anchor
offset, and on a dense row that is a guess. recordTip now keeps the hover
point alongside the tooltip's own offset and pinShot draws a static pointer
there. The glyph and its box move out of CURSOR_INIT into constants the two
share: a pinned pointer that did not match the animated one would read as a
different cursor rather than as the same tour paused, and that is the kind of
drift nobody notices until the figure is in a proof. pinShot takes a map
form, {name: x, cursors: false}, for a figure that does not want them, and the
pointers join the crop's bounding box so one on the bottom row cannot fall off.
The other half is composition. A journal wants parts (A), (B) as a single
file, so the panels had to be assembled by hand after the run. That puts the
figure's layout outside the script: rename a shot and the montage quietly
drops a panel instead of failing, which is the sort of thing found at
submission. montage: {name: x, shots: [a, b]} does it in the tour, so the
composite is a product of the same run as its parts. Panels stack in order
and letter themselves; labels:, direction:, gap: and labelSize: override.
Composition happens in a browser page at deviceScaleFactor 1 with every panel
at its natural pixel size, so the result is pixel-for-pixel its inputs -- a
make hires montage is print resolution because the panels were, not because
anything was upscaled. Panels narrower than the widest are left-aligned and
padded rather than stretched, and a named shot that was never taken warns and
is skipped.
- src/hg/utils/docent/README.md - lines changed 2, context: html, text, full: html, text
- src/hg/utils/docent/docent.js - lines changed 103, context: html, text, full: html, text
25ff975568a24a89dc2dcd4836875a448beaec9f Thu Aug 6 15:23:11 2026 -0700
- Docent: hide a composite as a unit under hideKids, and warn on an over-long nav, refs #37892
`{cCREs: hideKids}` on hg38 sent 1701 cart variables in a 42,020-character
GET. The walk behind hideKids went to true leaves, straight through the
ENCODE4 Core Collection composite, and enumerated all 850 of its ENCFF
subtracks. Apache's LimitRequestLine is 8190, so the server answered 414 and
the next shot: photographed "Request-URI Too Long" -- and nothing failed: the
page loaded, the still got written, the build exited 0. Only looking at the
figure caught it.
Hiding a composite already reaches its subtracks, so the expansion now stops
at the first container that propagates its own visibility and keeps descending
only through superTracks, which do not. hubApi never lists a superTrack
container, so the flag tdbParse already sets when it synthesizes one answers
the question without new data. That step is two variables now.
This is a separate walk rather than a change to tdbLeaves, whose other caller
resolves a container to a row on the page and does need true leaves -- a
composite has no img_data_ of its own.
nav() also warns when a URL passes 7800 characters. A 414 is not an
exception, it is a page, so the run continues and the damage is a wrong
figure; the one thing that helps is saying so at the time.
- src/hg/utils/docent/README.md - lines changed 1, context: html, text, full: html, text
- src/hg/utils/docent/docent.js - lines changed 43, context: html, text, full: html, text
6a22efd821c976be180e03c187be89d1155ad41a Sat Aug 8 09:04:15 2026 -0700
- hgConfCatalog: correct the blatNewPageBanner default and classify blatOldTracks, refs #37925
blatNewPageBanner was born TRUE at c683ecb63d7 and put back to FALSE at
81d7cff6cb6 while the new BLAT page is still being tested. The catalog kept
saying TRUE, and gate_lifecycle reads that field alone to decide a gate has
shipped, so the row would have put a gating flag in the shipped list.
blatOldTracks came in from --auto-register and needed a person. It is a
three-value string, not a flag, so no gate/knob role applies: it chooses what
happens to the custom tracks left by a user's earlier BLAT searches. Filed
under mirror knobs, whose description now admits the occasional non-boolean.
- src/hg/utils/hgConfCatalog/hgConfCatalog.py - lines changed 34, context: html, text, full: html, text
61d7da07a793fe0395aadfe566c0d0c3e70762f3 Sat Aug 8 09:04:24 2026 -0700
- urlCommandCatalog: describe the hgLogin and BLAT share parameters, refs #37923
The social-login, email-link and BLAT share-link work added 24 names the
registry had not seen. Ten of them are read with cgiUsualString or
cgiOptionalString and so are genuine URL parameters: provider, code, state,
error and error_description on the provider's redirect back to hgLogin,
newEmail, exp and sig on a signed change-of-email link, and blatPslId and
blatFaId on a stable BLAT share link. Those get rows.
The other fourteen are read only from the cart: the oauth_pending_ family,
oauth_state, and the hgLogin form fields. They go in the baseline.
Four of the ten are leaks. blatPslId and blatFaId are not in hgBlat's
excludeVars, which still lists only the older u and s share parameters, and
error and error_description are not in hgLogin's. Marked as such; the fix
belongs with whoever owns the leak list.
- src/hg/utils/urlCommandCatalog/urlCommandCatalog.py - lines changed 71, context: html, text, full: html, text
- src/hg/utils/urlCommandCatalog/urlNamesNotCataloged.txt - lines changed 14, context: html, text, full: html, text
5d76e853fa84baa6c4a05880d3f3b985a5e51878 Sat Aug 8 13:22:15 2026 -0700
- docent: add session, loadSession and expect verbs, refs #37892
session: writes the whole cart at that step to sessions/<base>/<name>.txt, in
the format hgSession's save-to-a-local-file button produces. No login is
involved. With sessionUrlBase: set, the run also prints the load URL, so a tour
hands back the state it built instead of only a picture of it. A file rather
than a live hgsid link, because the hgsid cart keeps changing as the tour runs.
loadSession: is the other direction: a settings file by URL, a share link, a
named session, or a local file written by an earlier session:. The load always
goes to the server named in target:, since named sessions are per-server and
every later step navigates to target: by absolute URL.
expect: is the only verb that can fail a run. It checks the rows drawn, the
image height, the tooltip now up, and the page text, then throws, so make stops
at that step rather than writing a wrong figure over a right one.
A session taken on a lifted view is short-lived: it names the quickLift hub by
its trash path, and re-pointing it at a durable copy does not work today. See
#38046. The README says so rather than working around it.
- src/hg/utils/docent/README.md - lines changed 126, context: html, text, full: html, text
- src/hg/utils/docent/docent.js - lines changed 197, context: html, text, full: html, text
- src/hg/utils/docent/docent.mk - lines changed 7, context: html, text, full: html, text
f963b73576b5c69915366893da7dfa6afe633456 Sat Aug 8 14:04:23 2026 -0700
- docent: add a tests directory and a browser-free derive mode, refs #37892
tests/ holds Docent scripts that assert with expect:, run by hand with `make
test` rather than by the tree's test target, since each one drives a real
server. Nine of them: the two-request composite split (#37953), hideKids on a
view and on a superTrack, the cCREs expansion that once overran the request
line, addCustomTrack, a 3x run, and the session/loadSession round trip. A
script named *.xfail.docent.yaml is expected to fail, which is how the
hideKids-aimed-at-the-composite trap is pinned rather than only written down,
and how expect: itself is checked.
DOCENT_DERIVE=1 prints what each track: step turns into and stops, with no
browser and no navigation. That derivation is where most of Docent's own
decisions are, and it was previously visible only in the log of a full run.
`make derive` diffs it against baselines in tests/expected/ for the scripts
whose derived set is small enough to be stable.
The track: verb now calls trackRounds() for that derivation instead of doing
it inline. No behaviour change intended; the tests above pass before and after.
Two things the tests turned up, both recorded in tests/README.txt: turning on
anything under a superTrack sends <superTrack>=show and undoes an earlier
hide: all for its other members, and hideKids on a view has to enumerate
leaves, so one such step sends 188 variables in a 6,986-character request.
- src/hg/utils/docent/README.md - lines changed 13, context: html, text, full: html, text
- src/hg/utils/docent/docent.js - lines changed 148, context: html, text, full: html, text
- src/hg/utils/docent/tests/README.txt - lines changed 86, context: html, text, full: html, text
- src/hg/utils/docent/tests/composite.docent.yaml - lines changed 25, context: html, text, full: html, text
- src/hg/utils/docent/tests/customtrack.docent.yaml - lines changed 22, context: html, text, full: html, text
- src/hg/utils/docent/tests/expected/composite.derive - lines changed 6, context: html, text, full: html, text
- src/hg/utils/docent/tests/expected/supertrack.derive - lines changed 4, context: html, text, full: html, text
- src/hg/utils/docent/tests/expected/urllen.derive - lines changed 3, context: html, text, full: html, text
- src/hg/utils/docent/tests/expectfail.xfail.docent.yaml - lines changed 17, context: html, text, full: html, text
- src/hg/utils/docent/tests/makefile - lines changed 102, context: html, text, full: html, text
- src/hg/utils/docent/tests/scale.docent.yaml - lines changed 22, context: html, text, full: html, text
- src/hg/utils/docent/tests/selftest.docent.yaml - lines changed 30, context: html, text, full: html, text
- src/hg/utils/docent/tests/supertrack.docent.yaml - lines changed 19, context: html, text, full: html, text
- src/hg/utils/docent/tests/urllen.docent.yaml - lines changed 20, context: html, text, full: html, text
- src/hg/utils/docent/tests/views.docent.yaml - lines changed 39, context: html, text, full: html, text
- src/hg/utils/docent/tests/views.xfail.docent.yaml - lines changed 21, context: html, text, full: html, text
switch to files view, user index