commit d8b1bae92d46ef3326482ca394e0b01034b51e163816101d72e948b8207445ef Author: Johannes Kastl Date: Tue Sep 10 05:44:51 2024 +0000 update to 0.21.0 OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm/jujutsu?expand=0&rev=25 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_service b/_service new file mode 100644 index 0000000..5824b45 --- /dev/null +++ b/_service @@ -0,0 +1,22 @@ + + + https://github.com/martinvonz/jj + git + .git + @PARENT_TAG@ + v0.21.0 + disable + v(.*) + + + + *.tar + gz + + + + + true + jj + + diff --git a/jj-0.18.0.obscpio b/jj-0.18.0.obscpio new file mode 100644 index 0000000..09f85d1 --- /dev/null +++ b/jj-0.18.0.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c20b2b26a9d97ccde20c500470af0767e78d59dc049bc3d22b1bd05a787b689 +size 5770765 diff --git a/jj-0.20.0.obscpio b/jj-0.20.0.obscpio new file mode 100644 index 0000000..45e8453 --- /dev/null +++ b/jj-0.20.0.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c095c934750c53479446a3dce6f529a79c3d0b7c7e87e8a2f742e195c994e03 +size 6293005 diff --git a/jj-0.21.0.obscpio b/jj-0.21.0.obscpio new file mode 100644 index 0000000..e1496b5 --- /dev/null +++ b/jj-0.21.0.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a8a78e26e9d4eeef85188dbe0c633346b8b6ffe52557c4338373d54b2806b73 +size 6437389 diff --git a/jj.obsinfo b/jj.obsinfo new file mode 100644 index 0000000..3f8c986 --- /dev/null +++ b/jj.obsinfo @@ -0,0 +1,4 @@ +name: jj +version: 0.21.0 +mtime: 1725469873 +commit: d002a5ad35e624a731e96e85f490f28febc7797e diff --git a/jujutsu.changes b/jujutsu.changes new file mode 100644 index 0000000..2f4c988 --- /dev/null +++ b/jujutsu.changes @@ -0,0 +1,697 @@ +------------------------------------------------------------------- +Tue Sep 10 04:57:58 UTC 2024 - Johannes Kastl + +- update to 0.21.0: + * Breaking changes + - next/prev will no longer infer when to go into edit mode when + moving from commit to commit. It now either follows the flags + --edit|--no-edit or it gets the mode from ui.movement.edit. + * Deprecations + - jj untrack has been renamed to jj file untrack. + * New features + - Add new boolean config knob, ui.movement.edit for controlling + the behaviour of prev/next. The flag turns edit mode on and + off permanently when set respectively to true or false. + - All diff formats except --name-only now include information + about copies and moves. So do external diff tools in + file-by-file mode. jj status also includes information about + copies and moves. + - Color-words diff has gained an option to display complex + changes as separate lines. It's enabled by default. To + restore the old behavior, set + diff.color-words.max-inline-alternation = -1. + - A tilde (~) at the start of the path will now be expanded to + the user's home directory when configuring a signing.key for + SSH commit signing. + - When reconfiguring the author, warn that the working copy + won't be updated + * Fixed bugs + - Release binaries for Intel Macs have been restored. They were + previously broken due to using a sunset version of GitHub's + macOS runners (but nobody had previously complained.) + +------------------------------------------------------------------- +Thu Aug 8 05:04:18 UTC 2024 - Johannes Kastl + +- update to 0.20.0: + * Breaking changes + - jj rebase --skip-empty has been renamed to jj rebase + --skip-emptied + - jj backout --revision has been renamed to jj backout + --revisions. The short alias -r is still supported. + - The default immutable_heads() set now includes + untracked_remote_branches() with the assumption that + untracked branches aren't managed by you. Therefore, + untracked branches are no longer displayed in jj log by + default. + - Updated defaults for graph node symbol templates + templates.log_node and templates.op_log_node. + - The "fileset" language is now enabled by default. It can + still be disable by setting ui.allow-filesets=false. + - On jj git fetch/import, commits referred to by HEAD@git are + no longer preserved. If a checked-out named branch gets + deleted locally or remotely, the corresponding commits will + be abandoned. + - jj --at-op=@ no longer merges concurrent operations if + explicitly specified. + - jj obslog -p no longer shows diffs at non-partial squash + operations. Previously, it showed the same diffs as the + second predecessor. + * Deprecations + - The original configuration syntax for jj fix is now + deprecated in favor of one that allows defining multiple + tools that can affect different filesets. + These can be used in combination for now. See jj help fix for + details. + * New features + - External diff tools can now be configured to invoke the tool + on each file individually instead of being passed a directory + by setting + merge-tools.$TOOL.diff-invocation-mode="file-by-file" in + config.toml. + - In git diffs, word-level hunks are now highlighted with + underline. See diff colors and styles for customization. + - New .diff().() commit template methods are added. + They can be used in order to show diffs conditionally. For + example, if(current_working_copy, diff.summary()). + - jj git clone and jj git init with an existing git repository + adds the default branch of the remote as repository settings + for revset-aliases."trunk()".` + - jj workspace forget now abandons the workspace's working-copy + commit if it was empty. + - jj backout now includes the backed out commit's subject in + the new commit message. + - jj backout can now back out multiple commits at once. + - jj git clone some/nested/path now creates the full directory + tree for nested destination paths if they don't exist. + - String patterns now support case‐insensitive matching by + suffixing any pattern kind with -i. mine() uses + case‐insensitive matching on your email address + unconditionally. Only ASCII case folding is currently + implemented, but this will likely change in the future. + - String patterns now support regex:"pattern". + - New tracked_remote_branches() and untracked_remote_branches() + revset functions can be used to select tracked/untracked + remote branches. + - The file() revset function now accepts fileset as argument. + - New diff_contains() revset function can be used to search + diffs. + - New command jj operation diff that can compare changes made + between two operations. + - New command jj operation show that can show the changes made + in a single operation. + - New config setting git.private-commits to prevent commits + from being pushed. + - The default commit description template can now be configured + by templates.draft_commit_description. + - jj fix can now be configured to run different tools on + different filesets. This simplifies the use case of + configuring code formatters for specific file types. See jj + help fix for details. + - Added revset functions author_date and committer_date. + - jj describe can now update the description of multiple + commits. + * Fixed bugs + - jj status will show different messages in a conflicted tree, + depending on the state of the working commit. In particular, + if a child commit fixes a conflict in the parent, this will + be reflected in the hint provided by jj status + - jj diff --git no longer shows the contents of binary files. + - Windows binaries no longer require vcruntime140.dll to be + installed (normally through Visual Studio.) + - On quit, the builtin pager no longer waits for all outputs to + be discarded. + - jj branch rename no longer shows a warning in colocated + repos. + +------------------------------------------------------------------- +Thu Jul 11 05:39:28 UTC 2024 - Johannes Kastl + +- update to 0.19.0: + * Breaking changes + - In revset aliases, top-level kind:pattern expression is now + parsed as modifier. Surround with parentheses if it should be + parsed as string/file pattern. + - Dropped support for automatic upgrade of repo formats used by + versions before 0.12.0. + - jj fix now defaults to the broader revset -s reachable(@, + mutable()) instead of -s @. + - Dropped support for deprecated jj branch delete/forget --glob + option. + - jj branch set now creates new branch if it doesn't exist. Use + jj branch move to ensure that the target branch already + exists. #3584 + * Deprecations + - Replacing -l shorthand for --limit with -n in jj log, jj op + log and jj obslog. + - jj split --siblings is deprecated in favor of jj split + --parallel (to match jj parallelize). + - A new jj file subcommand now replaces several existing + uncategorized commands, which are deprecated. + - jj file show replaces jj cat. + - jj file chmod replaces jj chmod. + - jj file list replaces jj files. + * New features + - Support background filesystem monitoring via watchman + triggers enabled with the + core.watchman.register_snapshot_trigger = true config. + - Show paths to config files when configuration errors occur. + - jj fix now supports configuring the default revset for -s + using the revsets.fix config. + - The descendants() revset function now accepts an optional + depth argument; like the ancestors() depth argument, it + limits the depth of the set. + - Revset/template aliases now support function overloading. + #2966 + - Conflicted files are individually simplified before being + materialized. + - The jj file subcommand now contains several existing file + utilities. + - jj file show, replacing jj cat. + - jj file chmod replacing jj chmod. + - jj file list replacing jj files. + - New command jj branch move let you update branches by name + pattern or source revision. + - New diff option jj diff --name-only allows for easier shell + scripting. + - In color-words diffs, hunks are now highlighted with + underline. See diff colors and styles for customization. + - jj git push -c can now accept revsets that resolve to + multiple revisions. This means that jj git push -c xyz -c abc + is now equivalent to jj git push -c 'all:(xyz | abc)'. + - jj prev and jj next have gained a --conflict flag which moves + you to the next conflict in a child commit. + - New command jj git remote set-url that sets the url of a git + remote. + - Author timestamp is now reset when rewriting discardable + commits (empty commits with no description) if authored by + the current user. #2000 + - jj commit now accepts --reset-author option to match jj + describe. + - jj squash now accepts a --keep-emptied option to keep the + source commit. + * Fixed bugs + - jj git push now ignores immutable commits when checking + whether a to-be-pushed commit has conflicts, or has no + description / committer / author set. #3029 + - jj will look for divergent changes outside the short prefix + set even if it finds the change id inside the short prefix + set. #2476 + +------------------------------------------------------------------- +Fri Jun 7 20:02:25 UTC 2024 - Johannes Kastl + +- update to 0.18.0: + * Breaking changes + - Dropped support for ui.default-revset config (replaced by + revsets.log in 0.8.0). + - The commit_summary_no_branches template is superseded by + templates.branch_list. + - jj split will now refuse to split an empty commit. + - jj config list now uses multi-line strings and single-quoted + strings in the output when appropriate. + - jj config get/list/set now parse name argument as TOML key. + Quote meta characters as needed. Example: jj config get + "revset-aliases.'trunk()'" + - When updating the working copy away from an empty and + undescribed commit, it is now abandoned even if it is a merge + commit. + - If a new working-copy commit is created because the old one + was abandoned, and the old commit was merge, then the new + commit will now also be. #2859 + - jj new's --insert-before/--insert-after options must now be + set for each commit the new commit will be inserted + before/after. Previously, those options were global flags and + specifying them once would insert the new commit before/ + after all the specified commits. + * Deprecations + - Attempting to alias a built-in command now gives a warning, rather than being + silently ignored. + * New features + - jj branch list/tag list now accept -T/--template option. The + tag list prints commit summary along with the tag name by + default. + - Conflict markers now include an explanation of what each part + of the conflict represents. + - ui.color = "debug" prints active labels alongside the regular + colored output. + - jj branch track now show conflicts if there are some. + - A new revset reachable(srcs, domain) will return all commits + that are reachable from srcs within domain. + - There are now prebuilt binaries for + aarch64-linux-unknown-musl. Note, these are cross compiled + and currently untested. We plan on providing fully tested + builds later once our CI system allows it. + - Added new revsets mutable() and immutable(). + - Upgraded scm-record from v0.2.0 to v0.3.0. See release notes + at https://github.com/arxanas/scm-record/releases/tag/v0.3.0 + - New command jj fix that can be configured to update commits + by running code formatters (or similar tools) on changed + files. The configuration schema and flags are minimal for + now, with a number of improvements planned (for example, + #3800 and #3801). + - jj new's --insert-before and --insert-after options can now + be used simultaneously. + - jj git push now can push commits with empty descriptions with + the --allow-empty-description flag + * Fixed bugs + - Previously, jj git push only made sure that the branch is in + the expected location on the remote server when pushing a + branch forward (as opposed to sideways or backwards). Now, jj + git push makes a safety check in all cases and fails whenever + jj git fetch would have introduced a conflict. + In other words, previously branches that moved sideways or + backward were pushed similarly to Git's git push --force; now + they have protections similar to git push --force-with-lease + (though not identical to it, to match the behavior of jj git + fetch). Note also that because of the way jj git fetch works, + jj does not suffer from the same problems as Git's git push + --force-with-lease in situations when git fetch is run in the + background. + - When the working copy commit becomes immutable, a new one is + automatically created on top of it to avoid letting the user + edit the immutable one. + - jj config list now properly escapes TOML keys (#1322). + - Files with conflicts are now checked out as executable if all + sides of the conflict are executable. + - The progress bar (visible when using e.g. jj git clone) + clears the remainder of the cursor row after drawing rather + than clearing the entire row before drawing, eliminating the + "flicker" effect seen on some terminals. + +------------------------------------------------------------------- +Wed May 8 06:55:40 UTC 2024 - Gordon Leung + +- update to 0.17.1: + * jj status no longer scans through the entire history to look + for ancestors with conflicts. + +------------------------------------------------------------------- +Thu May 2 17:49:33 UTC 2024 - Johannes Kastl + +- update to 0.17.0: + * Breaking changes + - The default template aliases were replaced as follows: + builtin_op_log_root(op_id: OperationId) -> + format_root_operation(root: Operation) + builtin_log_root(change_id: ChangeId, commit_id: CommitId) -> + format_root_commit(root: Commit) + builtin_change_id_with_hidden_and_divergent_info -> + format_short_change_id_with_hidden_and_divergent_info(commit: Commit) + - The --revision option of jj rebase is renamed to --revisions. + The short alias -r is still supported. + * New features + - The list of conflicted paths is printed whenever the working + copy changes. + This can be disabled with the --quiet option. + - Commit objects in templates now have a mine() -> Boolean + method analog to the same function in revsets. It evaluates + to true if the email of the commit author matches the current + user.email. + - Commit objects in templates now have a contained_in(revset: + String) -> Boolean method. + - Operation objects in templates now have a snapshot() -> + Boolean method that evaluates to true if the operation was a + snapshot created by a non-mutating command (e.g. jj log). + - Revsets and templates now support single-quoted raw string + literals. + - A new config option ui.always-allow-large-revsets has been + added to allow large revsets expressions in some commands, + without the all: prefix. + - A new config option ui.allow-filesets has been added to + enable "fileset" expressions. Note that filesets are + currently experimental, but will be enabled by default in a + future release. + - A new global flag --ignore-immutable lets you rewrite + immutable commits. + - New command jj parallelize that rebases a set of revisions + into siblings. + - jj status now supports filtering by paths. For example, jj + status . will only list changed files that are descendants of + the current directory. + - jj prev and jj next now work when the working copy revision + is a merge. + - jj squash now accepts a --use-destination-message/-u option + that uses the description of the destination for the new + squashed revision and discards the descriptions of the source + revisions. + - You can check whether Watchman fsmonitor is enabled or + installed with the new jj debug watchman status command. + - jj rebase now accepts revsets resolving to multiple revisions + with the --revisions/-r option. + - jj rebase -r now accepts --insert-after and --insert-before + options to customize the location of the rebased revisions. + * Fixed bugs + - Revsets now support \-escapes in string literal. + - The builtin diff editor now allows empty files to be selected + during jj split. + - Fixed a bug with jj split introduced in 0.16.0 that caused it + to incorrectly rebase the children of the revision being + split if they had other parents (i.e. if the child was a + merge). + - The snapshot.max-new-file-size option can now handle raw + integer literals, interpreted as a number of bytes, where + previously it could only handle string literals. This means + that snapshot.max-new-file-size="1" and + snapshot.max-new-file-size=1 are now equivalent. + - jj squash is now a no-op if the path argument didn't + match any paths (it used to create new commits with bumped + timestamp). #3334 + +------------------------------------------------------------------- +Thu Apr 4 05:15:23 UTC 2024 - Johannes Kastl + +- update to 0.16.0: + * Deprecations + - jj move was deprecated in favor of jj squash. + * Breaking changes + - The git_head template keyword now returns an optional value + instead of a list of 0 or 1 element. + - The jj sparse set --edit/--reset flags were split up into jj + sparse edit/reset subcommands respectively. + - The jj sparse subcommands now parse and print patterns as + workspace-relative paths. + - The jj log command no longer uses the default revset when a + path is specified. + * New features + - Config now supports rgb hex colors (in the form #rrggbb) + wherever existing color names are supported. + - ui.default-command now accepts multiple string arguments, for + more complex default jj commands. + - Graph node symbols are now configurable via templates + * templates.log_node + * templates.op_log_node + - jj log now includes synthetic nodes in the graph where some + revisions were elided. + - jj squash now accepts --from and --into (also aliased as + --to) if -r is not specified. It can now be used for all use + cases where jj move could previously be used. The --from + argument accepts a revset that resolves to more than one + revision. + - Commit templates now support immutable keyword. + - New template function coalesce(content, ..) is added. + - Timestamps are now shown in local timezone and without + milliseconds and timezone offset by default. + - jj git push now prints messages from the remote. + - jj branch list now supports a --conflicted/-c option to show + only conflicted branches. + - jj duplicate and jj abandon can now take more than a single + -r argument, for consistency with other commands. + - jj branch list now allows combining -r REVISIONS/NAMES and -a + options. + - --all is now named --all-remotes for jj branch list + - There is a new global --quiet flag to silence commands' + non-primary output. + - jj split now supports a --siblings/-s option that splits the + target revision into siblings with the same parents and + children. + - new function working_copies() for revsets to show the working + copy commits of all workspaces. + * Fixed bugs + - None + +------------------------------------------------------------------- +Sat Mar 16 17:29:53 UTC 2024 - Johannes Kastl + +- update to 0.15.1: + * No code changes (fixing Rust Cargo.toml stuff). +- BuildRequire gnupg to fix failing tests + +------------------------------------------------------------------- +Sat Mar 16 17:09:19 UTC 2024 - Johannes Kastl + +- update to 0.15.0: + * Breaking changes + - The minimum supported Rust version (MSRV) is now 1.76.0. + - The on-disk index format changed. New index files will be + created automatically, but it can fail if the repository is + co-located and predates Git GC issues #815. If reindexing + failed, you'll need to clean up corrupted operation history + by jj op abandon ... + - Dropped support for the "legacy" graph-drawing style. Use + "ascii" for a very similar result. + - The default log output no longer lists all tagged heads. Set + revsets.log = "@ | ancestors(immutable_heads().., 2) | + heads(immutable_heads())" to restore the old behavior. + - Dropped support for the deprecated : revset operator. Use :: + instead. + - jj rebase --skip-empty no longer abandons commits that were + already empty before the rebase. + * New features + - Partial support for commit signing. Currently you can + configure jj to "keep" commit signatures by making new ones + for rewritten commits, and to sign new commits when they are + created. + This comes with out-of-the-box support for the following + backends: + — GnuPG + - SSH + - Signature verification and an explicit sign command will + hopefully come soon. + - Templates now support logical operators: ||, &&, ! + - Templates now support the self keyword, which is the current + commit in jj log/obslog templates. + - jj show now accepts -T/--template option to render its output + using template + - jj config list now accepts -T/--template option. + - jj git fetch now accepts -b as a shorthand for --branch, + making it more consistent with other commands that accept a + branch + - In the templating language, Timestamps now have a .local() + method for converting to the local timezone. + - jj next/prev now infer --edit when you're already editing a + non-head commit (a commit with children). + - A new built-in pager named :builtin is available on all + platforms, implemented with minus + - Set config ui.log-synthetic-elided-nodes = true to make jj + log include synthetic nodes in the graph where some revisions + were elided (#1252, #2971). This may become the default + depending on feedback. + - When creating a new workspace, the sparse patterns are now + copied over from the current workspace. + - jj git init --colocate can now import an existing Git + repository. This is equivalent to jj git init --git-repo=.. + - jj git fetch now automatically prints new remote branches and + tags by default. + - --verbose/-v is now --debug (no short option since it's not + intended to be used often) + - jj move --from/--to can now be abbreviated to jj move -f/-t + - jj commit/diffedit/move/resolve/split/squash/unsquash now + accept --tool= option to override the default. #2575 + - Added completions for Nushell to jj util completion + - jj branch list now supports a --tracked/-t option which can + be used to show tracked branches only. Omits local + Git-tracking branches by default. + - Commands producing diffs now accept a --context flag for the + number of lines of context to show. + - jj commands with the -T/--template option now provide a hint + containing defined template names when no argument is given, + assisting the user in making a selection. + * Fixed bugs + - On Windows, symlinks in the repo are now supported when + Developer Mode is enabled. When symlink support is + unavailable, they will be materialized as regular files in + the working copy (instead of resulting in a crash). #2 + - On Windows, the :builtin pager is now used by default, rather + than being disabled entirely. + - Auto-rebase now preserves the shape of history even for merge + commits where one parent is an ancestor of another. #2600 + +------------------------------------------------------------------- +Thu Feb 8 06:50:56 UTC 2024 - Johannes Kastl + +- update to 0.14.0: + * Deprecations + - jj checkout and jj merge are both deprecated; use jj new + instead to replace both of these commands in all instances. + Rationale: jj checkout and jj merge both implement identical + functionality, which is a subset of jj new. checkout creates + a new working copy commit on top of a single specified + revision, i.e. with one parent. merge creates a new working + copy commit on top of at least two specified revisions, i.e. + with two or more parents. + The only difference between these commands and jj new, which + also creates a new working copy commit, is that new can + create a working copy commit on top of any arbitrary number + of revisions, so it can handle both the previous cases at + once. The only actual difference between these three commands + is the command syntax and their name. These names were chosen + to be familiar to users of other version control systems, but + we instead encourage all users to adopt jj new instead; it is + more general and easier to remember than both of these. + jj checkout and jj merge will no longer be shown as part of + jj help, but will still function for now, emitting a warning + about their deprecation. + Deadline: jj checkout and jj merge will be deleted and are + expected become a hard error later in 2024. + - jj init --git and jj init --git-repo are now deprecated and + will be removed in the near future. Use jj git init instead. + * Breaking changes + - (Minor) Diff summaries (e.g. jj diff -s) now use D for + "Deleted" instead of R for "Removed". @joyously pointed out + that R could also mean "Renamed". + - jj util completion now takes the shell as a positional + argument, not a flag. the previous behavior is deprecated, + but supported for now. it will be removed in the future. + * New features + - jj util completion now supports powershell and elvish. + - Official binaries for macOS running on Apple Silicon + (aarch64-apple-darwin) are now available, alongside the + existing macOS x86 binaries. + - New jj op abandon command is added to clean up the operation + history. Git refs and commit objects can be further compacted + by jj util gc. + - jj util gc now removes unreachable operation, view, and Git + objects. + - jj branch rename will now warn if the renamed branch has a + remote branch, since those will have to be manually renamed + outside of jj. + - jj git push gained a --tracked option, to push all the + tracked branches. + - There's now a virtual root operation, similar to the virtual + root commit. It appears at the end of jj op log. + - jj config list gained a --include-overridden option to allow + printing overridden config values. + - jj config list now accepts --user or --repo option to specify + config origin. + - New jj config path command to print the config file path + without launching an editor. + - jj tag list command prints imported git tags. + - jj next and jj prev now prompt in the event of the + next/previous commit being ambiguous, instead of failing + outright. + - jj resolve now displays the file being resolved. + - jj workspace root was aliased to jj root, for ease of + discoverability + - jj diff no longer shows the contents of binary files. + - jj git now has an init command that initializes a git backed + repo. + - New template function surround(prefix, suffix, content) is + added. + * Fixed bugs + - Fixed snapshots of symlinks in gitignore-d directory. #2878 + - Fixed data loss in dirty working copy when checked-out branch + is rebased or abandoned by Git. #2876 + +------------------------------------------------------------------- +Sun Jan 7 15:42:43 UTC 2024 - Johannes Kastl + +- update to 0.13.0: + * Breaking changes + - `jj git fetch` no longer imports new remote branches as local + branches. Set `git.auto-local-branch = true` to restore the + old behavior. + * New features + - Information about new and resolved conflicts is now printed + by every command. + - `jj branch` has gained a new `rename` subcommand that allows + changing a branch name atomically. `jj branch help rename` + for details. + * Fixed bugs + - Command aliases can now be loaded from repository config + relative to the current working directory. + [#2414](https://github.com/martinvonz/jj/issues/2414) + +------------------------------------------------------------------- +Wed Dec 6 12:15:35 UTC 2023 - Johannes Kastl + +- update to 0.12.0: + * Breaking changes + - The remote_branches() revset no longer includes branches + exported to the Git repository (so called Git-tracking + branches.) + - jj branch set no longer creates a new branch. Use jj branch + create instead. + - jj init --git in an existing Git repository now errors and + exits rather than creating a second Git store. + * New features + - jj workspace add can now take multiple --revision arguments, + which will create a new workspace with its working-copy + commit on top of all the parents, as if you had run + jj new r1 r2 r3 .... + - You can now set git.abandon-unreachable-commits = false to + disable the usual behavior where commits that became + unreachable in the Git repo are abandoned (#2504). + - jj new gained a --no-edit option to prevent editing the newly + created commit. For example, jj new a b --no-edit -m Merge + creates a merge commit without affecting the working copy. + - jj rebase now takes the flag --skip-empty, which doesn't copy + over commits that would become empty after a rebase. + - There is a new jj util gc command for cleaning up the + repository storage. For now, it simply runs git gc on the + backing Git repo (when using the Git backend). + * Fixed bugs + - Fixed another file conflict resolution issue where jj status + would disagree with the actual file content. #2654 + +------------------------------------------------------------------- +Wed Nov 01 19:12:45 UTC 2023 - kastl@b1-systems.de + +- Update to version 0.11.0: + * Breaking changes + - Conflicts are now stored in a different way. Commits written + by a new jj binary will not be read correctly by older jj + binaries. The new model solves some performance problems with + the old model. For example, jj log should be noticeably + faster on large repos. You may need to create a new clone to + see the full speedup. + - The remote_branches() revset now includes branches exported + to the Git repository (so called Git-tracking branches.) Use + remote_branches(remote=exact:"origin") to query branches of + certain remote. + - Status messages are now printed to stderr. + - jj config set now interprets the value as TOML also if it's a + valid TOML array or table. For example, jj config set --user + 'aliases.n' '["new"]' + - Remote branches now have tracking or non-tracking flags. The + git.auto-local-branch setting is applied only to newly + fetched remote branches. Existing remote branches are + migrated as follows: + - If local branch exists, the corresponding remote branches + are considered tracking branches. + - Otherwise, the remote branches are non-tracking branches. + - If the deduced tracking flags are wrong, use jj branch + track/untrack commands to fix them up. + - See automatic local branch creation for details. + - Non-tracking remote branches aren't listed by default. Use jj + branch list --all to show all local and remote branches. + - It's not allowed to push branches if non-tracking remote + branches of the same name exist. + - Pushing deleted/moved branches no longer abandons the local + commits referenced by the remote branches. + - jj git fetch --branch now requires glob: prefix to expand * + in branch name. + * New features + - jj's stable release can now be installed with cargo binstall + jj-cli. + - jj workspace add now takes a --revision argument. + - jj workspace forget can now forget multiple workspaces at + once. + - branches()/remote_branches()/author()/committer()/description() + revsets now support glob matching. + - jj branch delete/forget/list, and jj git push --branch now + support string pattern syntax. The --glob option is + deprecated in favor of glob: pattern. + - The branches/tags/git_refs/git_head template keywords now + return a list of RefNames. They were previously pre-formatted + strings. + - The new template keywords local_branches/remote_branches are + added to show only local/remote branches. + - jj workspace add now preserves all parents of the old + working-copy commit instead of just the first one. + - jj rebase -r gained the ability to rebase a revision A onto a + descendant of A. + * Fixed bugs + - Updating the working copy to a commit where a file that's + currently ignored in the working copy no longer leads to a + crash (#976). + - Conflicts in executable files can now be resolved just like + conflicts in non-executable files (#1279). + - jj new --insert-before and --insert-after now respect + immutable revisions (#2468). + +------------------------------------------------------------------- +Mon Oct 9 15:49:09 UTC 2023 - Johannes Kastl + +- new package jujutsu: A Git-compatible DVCS that is both simple + and powerful diff --git a/jujutsu.spec b/jujutsu.spec new file mode 100644 index 0000000..5da9827 --- /dev/null +++ b/jujutsu.spec @@ -0,0 +1,81 @@ +# +# spec file for package jujutsu +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define binary_name jj + +Name: jujutsu +Version: 0.21.0 +Release: 0 +Summary: Git-compatible DVCS that is both simple and powerful +License: MIT +URL: https://github.com/martinvonz/jj +Source0: jj-%{version}.tar.gz +Source1: vendor.tar.zst +BuildRequires: cargo >= 1.76 +BuildRequires: cargo-packaging +BuildRequires: gnupg +BuildRequires: openssh-common +BuildRequires: openssl-devel +BuildRequires: zstd + +# serde_bser fails to compile on s390x +# error[E0599]: no method named `put_f64_be` found for struct `Vec` in the current scope +ExcludeArch: s390x + +%description +Jujutsu is a Git-compatible DVCS. It combines features from Git (data model, +speed), Mercurial (anonymous branching, simple CLI free from "the index", +revsets, powerful history-rewriting), and Pijul/Darcs (first-class conflicts), +with features not found in most of them (working-copy-as-a-commit, undo +functionality, automatic rebase, safe replication via rsync, Dropbox, or +distributed file system). + +The command-line tool is called jj for now because it's easy to type and easy +to replace (rare in English). The project is called "Jujutsu" because it +matches "jj". + +Jujutsu is relatively young, with lots of work to still be done. If you have +any questions, or want to talk about future plans, please join us on Discord +Discord or start a GitHub Discussion; the developers monitor both channels. + +Important +Jujutsu is an experimental version control system. While Git compatibility is +stable, and most developers use it daily for all their needs, there may still +be work-in-progress features, suboptimal UX, and workflow gaps that make it +unusable for your particular use. + +%prep +%autosetup -p 1 -a 1 -n jj-%{version} + +%build +%{cargo_build} + +%install +install -D -d -m 0755 %{buildroot}%{_bindir} +install -m 0755 %{_builddir}/%{binary_name}-%{version}/target/release/%{binary_name} %{buildroot}%{_bindir}/%{binary_name} + +%check +rm -rf tests/contest/ +%{cargo_test} + +%files +%doc README.md +%license LICENSE +%{_bindir}/%{binary_name} + +%changelog diff --git a/vendor.tar.zst b/vendor.tar.zst new file mode 100644 index 0000000..631892e --- /dev/null +++ b/vendor.tar.zst @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b685c569b979d0bb94afdce8d1edd5e2c7d2c67bf4f551ddf9141b2ab88c435 +size 39938745