Jujutsu
詳細情報
タイトル | Jujutsu |
---|---|
URL | https://github.com/martinvonz/jj |
バージョン | ver 0.17.0 |
更新日 | 2024/05/02 |
追加日 | 2024/02/08 |
種別 | フリーソフト / オープンソース(Apache) |
説明 | ソフトウェアプロジェクトのための強力なバージョン管理システム。 |
レビュー
Jujutsuはソフトウェア開発のための強力なバージョン管理ツール。
Googleのエンジニアによって開発されていて、現在デファクトスタンダードとなっているGitの複雑なコマンドラインの問題を解決し、直感的に使用できるようにデザインされている。物理的なバックエンドとして、ネイティブストレージのほかに、Gitリポジトリを使用することも可能。
以下のような特徴を持っている。
- コミットとしての作業コピー: ファイルへの変更は通常のコミットとして自動的に記録され、その後の変更のたびに修正される。この「スナップショット」デザインは、ユーザー向けのデータモデルを単純化し、内部アルゴリズムを単純化し、Gitの隠し場所やインデックス/ステージング領域のような機能を完全に包含する。
- 操作ログとアンドゥ: Jujutsuは、コミット、プル、プッシュに至るまで、リポジトリ上で実行されたすべての操作を記録する。
- 自動リベースと競合の解決: コミットを変更すると、すべての子孫は変更されたばかりのコミットの上に自動的にリベースされる。これにより、「パッチベース」のワークフローが簡単になる。
- 安全な同時レプリケーション: Jujutsuは同時実行シナリオの下で安全であるように設計されている。rsyncやDropboxで保存されたリポジトリを使用しても、リポジトリが破損した状態になることはない。最悪の場合、ローカルとリモートのコンフリクトが発生し、それを解決する必要がある。
Rustで作られていて、Windows/macOS/Linux用の実行ファイルが準備されている。
スクリーンショット
更新グラフ
バージョン履歴
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 ofjj 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
Deprecations
-
jj move
was deprecated in favor ofjj 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 intojj 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.
No code changes (fixing Rust Cargo.toml stuff).
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 ..<bad operation ID>
. -
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::
inst
Deprecations
-
jj checkout
andjj merge
are both deprecated; usejj new
instead to
replace both of these commands in all instances.Rationale:
jj checkout
andjj merge
both implement identical
functionality, which is a subset ofjj 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 thatnew
can create a working copy commit on
top of any arbitrary number of revi