| Age | Commit message (Collapse) | Author | Lines |
|
`compose_snapshot_prefix` dropped the leading v of a tag only when just
one of the names 1.2, v1.2 and V1.2 resolved as a tag, so that the
shorter snapshot name could always be traced back to one tag. Those
probes went through ref lookups, and on a case-insensitive filesystem
a lookup for V1.2 finds the loose file of v1.2, so every freshly made
tag counted as ambiguous and kept its v. Once git packed the refs the
lookups became exact and the same tag quietly changed its snapshot
names.
The claimants on a stripped name are now counted over the tag list
itself with exact string comparison, so the answer no longer depends
on how a ref is stored or on the filesystem underneath. Two tags that
really differ only by the letter's case still both keep it.
|
|
|
|
|
|
|
|
|
|
noplainemail enable-plain-email
noheader enable-header
cache-root-ttl cache-index-ttl
cache-repo-ttl cache-summary-ttl
cache-scanrc-ttl cache-scan-ttl
agefile age-file
renamelimit rename-limit
extra-head-content head-content
|
|
A `max-stats` period enables the page again, as it did before
v2.2.0, so one key does both jobs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A submodule row linked to a path with its trailing slash stripped,
was labelled by its path rather than its entry name, shared the
name's element with its hash, claimed a size of zero and offered a
blame button that cannot work on a gitlink.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`max-stats` only bounds the selectable periods now and no longer
doubles as the enable switch.
The tree walk runs before the history walk on purpose. Releasing
commit memory while walking history resets each commit slab index,
and a commit graph lookup afterwards would read another commit slot
and walk the wrong tree. The stats fixture writes a commit graph so
the tests cover that path. The history walk bounds the window in
process rather than passing a formatted since date to
`setup_revisions`, and parses each commit once.
|
|
|
|
|
|
|
|
AUTHORS now records the upstream developers as the project's history
rather than as maintainers of the fork.
|
|
The pager html-escaped its search and sort values instead of
url-encoding them, so a term with a hash or ampersand broke the link
and dropped the active filter on the next page.
|
|
`fmt()` aborts the request rather than truncate, so a very long path
fed into a context-sensitive tab title took down page rendering.
|
|
A plain char is undefined in the ctype functions for negative values,
which a high byte produces wherever char is signed.
|
|
The button is emitted hidden and only revealed by the script, so a
browser without JavaScript never shows a control that cannot work and
the page keeps tracking the system theme.
|
|
The old sheet had no overflow rules, so wide code, diff, blame and
stats blocks scrolled the whole page sideways on a phone. The classic
layout, badge colours and age shading are kept.
|
|
Without a viewport meta, mobile browsers assume a desktop-width page
and scale it down, which is the root cause of content overflowing on
small screens.
|
|
The masthead, tab bar, breadcrumb, content region and footer were HTML
tables, which cannot reflow and forced the page to scroll sideways on
small screens. Class and id names are kept so custom themes keep
matching, the tabs gain title hints and the form controls accessible
names.
|
|
|