Releases: rustutils/git-lfs
Releases · rustutils/git-lfs
Release v0.5.0
Changed
--helpoutput no longer renders rustdoc backticks literally. The
doc-comment markdown convention now produces clean terminal text
(backticks stripped), bold inline-code in man pages, and proper
links in the mdbook docs (gitignore(5),git-lfs-config(5),
etc. resolve to git-scm.com or the corresponding internal page).git-lfs-smudge(1)gains ENVIRONMENT and KNOWN BUGS sections;
git-lfs-checkout(1)gets the upstream-faithful DESCRIPTION
(conflict mode, partial-clone /GIT_ATTR_SOURCEinteraction,
bare-repo behavior) and an EXAMPLES section.git-lfs-fetch(1)gets the upstream-faithful DESCRIPTION,
per-flag wording, and dedicated DEFAULT REMOTE / DEFAULT REFS /
INCLUDE AND EXCLUDE / EXAMPLES / SEE ALSO sections. Adds
-a/-p/-d/-jshort aliases for--all/--prune/
--dry-run/--jsonto match upstream. The--recent
flag and thelfs.fetchrecent*configuration are still
unimplemented and the docs say so explicitly.git-lfs-pull(1)gets the upstream-faithful DESCRIPTION
(with a short pointer to git-lfs-checkout(1) for the
partial-clone / bare-repo behavior, since the same prose
already lives there) plus DEFAULT REMOTE, INCLUDE AND
EXCLUDE, and SEE ALSO sections.git-lfs-push(1)gets the upstream-faithful DESCRIPTION,
per-flag wording (including the "behavior differs from
git lfs fetch --all" warning on--all), and a SEE
ALSO section. Adds-d/-a/-oshort aliases for
--dry-run/--all/--object-idto match upstream.git-lfs-install(1)andgit-lfs-uninstall(1)get
upstream-faithful DESCRIPTIONs and per-flag wording,
plus SEE ALSO sections. Adds-w(--worktree) on
both and-s(--skip-smudge) on install for parity.
--manualis not yet supported on install — use
git lfs update --manualinstead.git-lfs-track(1)andgit-lfs-untrack(1)get
upstream-faithful DESCRIPTIONs, per-flag wording, and
EXAMPLES + SEE ALSO sections. Adds-d(--dry-run)
and-j(--json) short aliases on track for parity.git-lfs-lock(1),git-lfs-locks(1), and
git-lfs-unlock(1)get upstream-faithful DESCRIPTIONs
and per-flag wording, plus SEE ALSO sections. Our
--ref(refspec) flag is documented as an extension
over upstream's CLI on each command.--cachedon
locksis not yet implemented.git-lfs-status(1),git-lfs-ls-files(1),
git-lfs-prune(1), andgit-lfs-fsck(1)get
upstream-faithful DESCRIPTIONs and per-flag wording,
plus SEE ALSO sections. Each page honestly notes
unimplemented upstream features:ls-filesskips
--include/--exclude/--deletedand the two-ref
diff form;pruneskips the--force/--recent/
--verify-remotefamily and the recent-files /
stash / worktree retention rules;fsckskips the
<a>..<b>range form andlfs.fetchexcludehonor.git-lfs-clean(1),git-lfs-filter-process(1),
git-lfs-clone(1),git-lfs-pointer(1),
git-lfs-version(1),git-lfs-env(1),
git-lfs-ext(1), andgit-lfs-update(1)get
upstream-faithful descriptions and per-flag wording.
Adds-s(--skip) on filter-process and-m/-f
(--manual/--force) on update for parity with
upstream's short aliases. Thegit-lfs-clone(1)page
notes thatgit lfs cloneno longer offers a
meaningful speedup over plaingit clone(which
parallelizes the smudge filter on modern Git).git-lfs-pre-push(1),git-lfs-post-checkout(1),
git-lfs-post-commit(1), andgit-lfs-post-merge(1)
get upstream-faithful descriptions and SEE ALSO
sections. Adds-d(--dry-run) on pre-push for
parity. The post-* hook docstrings previously claimed
"no-op stub"; corrected to reflect that all three
now wire into the lockable read-only enforcement
(the post-commit page notes our gap vs. upstream's
HEAD-only optimization).git-lfs-migrate(1)and its three subcommands
(import,export,info) get upstream-faithful
descriptions and per-flag wording. The migrate parent
page also gets INCLUDE AND EXCLUDE (with the
migrate-specific glob semantics that differ from
gitignore form), INCLUDE AND EXCLUDE REFERENCES
(with the ASCII commit-graph diagram), EXAMPLES (8
representative invocations across all three modes),
and SEE ALSO sections. Man pages for commands with
subcommands now include a SUBCOMMANDS section listing
them.- xtask now recurses into nested subcommands, generating
a man page and mdbook page for each one — the migrate
subcommands now have their own pages
(git-lfs-migrate-import(1)etc.), so the SUBCOMMANDS
cross-references ongit-lfs-migrate(1)resolve to
real pages instead of broken ones. - Every man page and mdbook page now ends with a REPORTING BUGS
section pointing at the project issue tracker and clarifying
that this is the Rust port (so reports don't end up on the
upstream Go project's tracker by mistake). Sourced from a
singlecli/man/reporting_bugs.md. The groff converter
learned.UR/.UEfor markdown links, so "issue tracker"
renders as a clickable link in OSC-8-capable terminals and
falls back to "issue tracker ⟨URL⟩" everywhere else
(portable across groff and mandoc).
Added
- Release packaging via
just package. Cross-compilesgit-lfsfor
linux-musl, darwin, and windows-gnullvm (x86_64 + aarch64 each)
using cargo-zigbuild, and produces per-target tarballs (zips on
windows) undertarget/dist/. Linux musl targets additionally
build.deband.rpmpackages via cargo-deb / cargo-generate-rpm,
namedgit-lfs-rsto avoid colliding with the upstreamgit-lfs
package; the binary still installs as/usr/bin/git-lfsso
git lfs <command>works after install. A source tarball
(git-lfs-X.Y.Z.tar.zst) ships alongside, combininggit archive HEADwith the generated man pages so downstream packagers can
build without our xtask. - Release binaries are now stripped, ThinLTO-optimized, single-codegen-
unit, andpanic = "abort"(workspace[profile.release]). Smaller
and faster than the default release profile. Stripping happens during
rustc rather than via cargo-deb's host-binutils strip, which was
failing on cross-arch musl binaries in CI. - GitLab CI pipeline (
lint → test → package → release → deploy).
Pushes to master run lint and test; semver-tagged commits
additionally build all packaging artifacts and publish a GitLab
release with notes pulled from the matchingCHANGELOG.md
section. Package job is also exposed as a manual button on master
and merge requests so packaging can be verified without cutting a
tag.
Fixed
git lfs ls-files --debugnow terminates each pointer block
with a trailing blank line, matching upstream's output and the
vendoredt-ls-filestest expectations.- Batch responses that use the deprecated
_linksfield name
(instead ofactions) now deserialize correctly. Older LFS
servers in the wild still emit this form. git lfs ls-filesoutside a git repository now printsNot in a Git repository.to stdout and exits 128, matching the other
commands.git lfs ls-files -- --allnow hints at the likely intended
git lfs ls-files --all --instead of silently scanning HEAD
for a ref named--all.git lfs migrate info --unit=<unit>now formats every row's
byte count as a fractional count of the requested unit
(b,kb,mb,gb,tb,pb) instead of being silently
ignored. Bare unit suffixes (--unit=kb) are accepted as
shorthand for--unit=1kb.git lfs smudgehonorslfs.skipdownloaderrors/
GIT_LFS_SKIP_DOWNLOAD_ERRORS. When the local store doesn't
have an object and the fetch fails, the smudge filter now
passes the original pointer text through to the working tree
instead of failing the checkout.