Skip to content

Releases: rustutils/git-lfs

Release v0.5.0

03 May 19:22
f1dfabc

Choose a tag to compare

Changed

  • --help output 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_SOURCE interaction,
    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/-j short aliases for --all/--prune/
    --dry-run/--json to match upstream. The --recent
    flag and the lfs.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/-o short aliases for
    --dry-run/--all/--object-id to match upstream.
  • git-lfs-install(1) and git-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.
    --manual is not yet supported on install — use
    git lfs update --manual instead.
  • git-lfs-track(1) and git-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. --cached on
    locks is not yet implemented.
  • git-lfs-status(1), git-lfs-ls-files(1),
    git-lfs-prune(1), and git-lfs-fsck(1) get
    upstream-faithful DESCRIPTIONs and per-flag wording,
    plus SEE ALSO sections. Each page honestly notes
    unimplemented upstream features: ls-files skips
    --include/--exclude/--deleted and the two-ref
    diff form; prune skips the --force/--recent/
    --verify-remote family and the recent-files /
    stash / worktree retention rules; fsck skips the
    <a>..<b> range form and lfs.fetchexclude honor.
  • 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), and git-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. The git-lfs-clone(1) page
    notes that git lfs clone no longer offers a
    meaningful speedup over plain git clone (which
    parallelizes the smudge filter on modern Git).
  • git-lfs-pre-push(1), git-lfs-post-checkout(1),
    git-lfs-post-commit(1), and git-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 on git-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
    single cli/man/reporting_bugs.md. The groff converter
    learned .UR/.UE for 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-compiles git-lfs for
    linux-musl, darwin, and windows-gnullvm (x86_64 + aarch64 each)
    using cargo-zigbuild, and produces per-target tarballs (zips on
    windows) under target/dist/. Linux musl targets additionally
    build .deb and .rpm packages via cargo-deb / cargo-generate-rpm,
    named git-lfs-rs to avoid colliding with the upstream git-lfs
    package; the binary still installs as /usr/bin/git-lfs so
    git lfs <command> works after install. A source tarball
    (git-lfs-X.Y.Z.tar.zst) ships alongside, combining git archive HEAD with the generated man pages so downstream packagers can
    build without our xtask.
  • Release binaries are now stripped, ThinLTO-optimized, single-codegen-
    unit, and panic = "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 matching CHANGELOG.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 --debug now terminates each pointer block
    with a trailing blank line, matching upstream's output and the
    vendored t-ls-files test expectations.
  • Batch responses that use the deprecated _links field name
    (instead of actions) now deserialize correctly. Older LFS
    servers in the wild still emit this form.
  • git lfs ls-files outside a git repository now prints Not in a Git repository. to stdout and exits 128, matching the other
    commands.
  • git lfs ls-files -- --all now 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 smudge honors lfs.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.