%bcond check 1 Name: jj Version: 0.46.0 Release: 1.ci.b4e41855f7eb%{?dist} Summary: Git-compatible distributed version control system # Cumulative SPDX over jj-cli and every statically-linked crate # (cargo2rpm license-summary over the default feature set). License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND ((MIT OR Apache-2.0) AND Unicode-3.0) AND ((MIT OR Apache-2.0) AND Unicode-DFS-2016) AND Apache-2.0 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR BSL-1.0 OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND (CC0-1.0 OR MIT-0 OR Apache-2.0) AND MIT AND (MIT AND Unicode-DFS-2016) AND (MIT OR Apache-2.0) AND MPL-2.0 AND Unicode-3.0 AND (Unlicense OR MIT) AND WTFPL AND Zlib AND (Zlib OR Apache-2.0 OR MIT) URL: https://github.com/jj-vcs/jj Source0: %{url}/archive/refs/tags/v%{version}/%{name}-%{version}.tar.gz Source1: %{name}-%{version}-vendor.tar.xz ExclusiveArch: %{rust_arches} BuildRequires: cargo-rpm-macros >= 24 # Vendoring turns off %%cargo_generate_buildrequires; the only native code in the # tree is mimalloc's bundled C allocator (libmimalloc-sys), so gcc is the sole # build dep -- git backend is gix and zlib is zlib-rs, both pure Rust. BuildRequires: gcc %description Jujutsu (jj) is a Git-compatible distributed version control system. It records the working copy as a commit, tracks every operation for undo, resolves conflicts lazily as first-class objects, and works directly against existing Git repositories and remotes. %prep %autosetup -n %{name}-%{version} -p1 tar -xJf %{SOURCE1} %cargo_prep -v vendor %build # Build only the CLI (jj-cli, binary `jj`); the workspace's other members are # not shipped separately. %cargo_build -- -p jj-cli %{cargo_vendor_manifest} # docs/ carries symlinks pointing outside the tree; dereference them so # %%doc ships real files instead of dangling links. rm docs/config-schema.json docs/governance/GOVERNANCE.md cp -p cli/src/config-schema.json docs/config-schema.json cp -p GOVERNANCE.md docs/governance/GOVERNANCE.md %install install -Dpm0755 target/rpm/%{name} %{buildroot}%{_bindir}/%{name} # Emits one man page per (sub)command, hence the jj*.1* glob in %%files. target/rpm/%{name} util install-man-pages %{buildroot}%{_mandir} # Completions are emitted by the freshly built binary (no Source file, no # Requires on the shell). install -d %{buildroot}%{bash_completions_dir} \ %{buildroot}%{zsh_completions_dir} \ %{buildroot}%{fish_completions_dir} target/rpm/%{name} util completion bash > %{buildroot}%{bash_completions_dir}/%{name} target/rpm/%{name} util completion zsh > %{buildroot}%{zsh_completions_dir}/_%{name} target/rpm/%{name} util completion fish > %{buildroot}%{fish_completions_dir}/%{name}.fish %check %if %{with check} # The suite drives the binary against a cargo dev layout with the test-fakes # helper binaries, so smoke-test the installed binary instead. %{buildroot}%{_bindir}/%{name} --version > version.out # cli/build.rs appends the build tree's commit hash when jj or git runs there: # never in the clean chroot, always under the local rpm goal, which unpacks # inside this repo. grep -qE '^%{name} %{version}(-[0-9a-f-]+)?$' version.out %endif %files %license LICENSE %license cargo-vendor.txt %doc README.md CHANGELOG.md # End-user docs: tutorial, config, revsets, templates, FAQ, git comparison, etc. %doc docs %{_bindir}/%{name} %{_mandir}/man1/%{name}*.1* %{bash_completions_dir}/%{name} %{zsh_completions_dir}/_%{name} %{fish_completions_dir}/%{name}.fish %changelog * Sat Oct 10 2026 Bahtiar `kalkin-` Gadimov - 0.46.0-1 - Update to 0.46.0 - Regenerate the cumulative License string for the 0.46.0 crate tree: it gains the bare Unicode-3.0 the icu and zerovec crates carry - Drop (MIT OR Apache-2.0 OR LGPL-2.1-or-later) from License: it covered r-efi, which getrandom pulls only for target_os = "uefi" and so is never linked into the shipped binary - docs/revsets.toml no longer ships: upstream removed it from docs/ - Breaking upstream changes: `jj workspace add` now creates a Git worktree when the parent workspace is colocated and git.colocate is true (the default), which needs git >= 2.42; `jj undo` and `jj redo` refuse an operation performed in another workspace unless --allow-cross-workspace is given; `jj split` opens one editor session for both descriptions; `jj workspace list` and `root` no longer omit unreachable paths * Tue Sep 15 2026 Bahtiar `kalkin-` Gadimov - 0.45.1-1 - Update to 0.45.1 - Skips 0.45.0, which is never published here: it changes `jj config {edit,set,unset} --user` to target the first loaded user config file instead of prompting, stops `jj git import` importing from a detached Git HEAD in non-colocated repos, and migrates existing repositories to per-worktree Git HEAD tracking with no downgrade path * Mon Aug 10 2026 Bahtiar `kalkin-` Gadimov - 0.44.0-1 - Update to 0.44.0 * Mon Jul 06 2026 Bahtiar `kalkin-` Gadimov - 0.43.0-1 - Initial package