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用の実行ファイルが準備されている。

スクリーンショット

更新グラフ

バージョン履歴

v0.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

(省略されました)
v0.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.

(省略されました)
v0.15.1

No code changes (fixing Rust Cargo.toml stuff).

v0.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 ..<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

(省略されました)
v0.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 revi

(省略されました)