From 30ab71d34096f18d6188f4d5411bdbbc759fbbae Mon Sep 17 00:00:00 2001 From: Martin von Zweigbergk Date: Tue, 29 Oct 2024 21:36:31 -0700 Subject: [PATCH] bookmarks: add support for `git.auto-local-bookmark` (to match docs) We had documented that we support `git.auto-local-bookmark` but we don't. The documentation has been incorrect since d9c68e08b1a5. This patch fixes it by adding support for `git.auto-local-bookmark` with fallback to the old/current `git.auto-local-branch`. . --- CHANGELOG.md | 3 ++ cli/src/commands/git/init.rs | 2 +- cli/src/config-schema.json | 2 +- cli/tests/test_bookmark_command.rs | 18 +++++------ cli/tests/test_builtin_aliases.rs | 2 +- cli/tests/test_commit_template.rs | 2 +- cli/tests/test_git_clone.rs | 16 +++++----- cli/tests/test_git_colocated.rs | 2 +- cli/tests/test_git_fetch.rs | 46 +++++++++++++-------------- cli/tests/test_git_init.rs | 8 ++--- cli/tests/test_git_private_commits.rs | 2 +- cli/tests/test_git_push.rs | 6 ++-- cli/tests/test_init_command.rs | 8 ++--- docs/design/tracking-branches.md | 8 ++--- lib/src/settings.rs | 13 +++++--- 15 files changed, 73 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d9760118..37975a5cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,9 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Deprecations +* `git.auto-local-bookmark` replaces `git.auto-local-branch`. The latter remains + supported for now (at lower precedence than the former). + ### New features * Added diff options to ignore whitespace when comparing lines. Whitespace diff --git a/cli/src/commands/git/init.rs b/cli/src/commands/git/init.rs index 1d5735752..b38ec1b26 100644 --- a/cli/src/commands/git/init.rs +++ b/cli/src/commands/git/init.rs @@ -219,7 +219,7 @@ fn init_git_refs( } print_git_import_stats(ui, tx.repo(), &stats, false)?; if colocated { - // If git.auto-local-branch = true, local bookmarks could be created for + // If git.auto-local-bookmark = true, local bookmarks could be created for // the imported remote branches. let failed_refs = git::export_refs(tx.repo_mut())?; print_failed_git_export(ui, &failed_refs)?; diff --git a/cli/src/config-schema.json b/cli/src/config-schema.json index 8efedcdc0..ba8f65757 100644 --- a/cli/src/config-schema.json +++ b/cli/src/config-schema.json @@ -313,7 +313,7 @@ "type": "object", "description": "Settings for git behavior (when using git backend)", "properties": { - "auto-local-branch": { + "auto-local-bookmark": { "type": "boolean", "description": "Whether jj creates a local bookmark with the same name when it imports a remote-tracking branch from git. See https://martinvonz.github.io/jj/latest/config/#automatic-local-bookmark-creation", "default": false diff --git a/cli/tests/test_bookmark_command.rs b/cli/tests/test_bookmark_command.rs index 3d2a69282..aace7ee17 100644 --- a/cli/tests/test_bookmark_command.rs +++ b/cli/tests/test_bookmark_command.rs @@ -709,7 +709,7 @@ fn test_bookmark_forget_fetched_bookmark() { // Set up a git repo with a bookmark and a jj repo that has it as a remote. let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); let git_repo_path = test_env.env_root().join("git-repo"); @@ -833,7 +833,7 @@ fn test_bookmark_forget_deleted_or_nonexistent_bookmark() { // ======== Beginning of test setup ======== // Set up a git repo with a bookmark and a jj repo that has it as a remote. let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); let git_repo_path = test_env.env_root().join("git-repo"); @@ -928,7 +928,7 @@ fn test_bookmark_track_untrack() { "refs/heads/feature2", ], ); - test_env.add_config("git.auto-local-branch = false"); + test_env.add_config("git.auto-local-bookmark = false"); let (_stdout, stderr) = test_env.jj_cmd_ok(&repo_path, &["git", "fetch"]); insta::assert_snapshot!(stderr, @r###" bookmark: feature1@origin [new] untracked @@ -1039,7 +1039,7 @@ fn test_bookmark_track_untrack() { "refs/heads/feature3", ], ); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let (_stdout, stderr) = test_env.jj_cmd_ok(&repo_path, &["git", "fetch"]); insta::assert_snapshot!(stderr, @r###" bookmark: feature1@origin [updated] untracked @@ -1130,7 +1130,7 @@ fn test_bookmark_track_untrack_patterns() { } // Fetch new commit without auto tracking - test_env.add_config("git.auto-local-branch = false"); + test_env.add_config("git.auto-local-bookmark = false"); let (_stdout, stderr) = test_env.jj_cmd_ok(&repo_path, &["git", "fetch"]); insta::assert_snapshot!(stderr, @r###" bookmark: feature1@origin [new] untracked @@ -1235,7 +1235,7 @@ fn test_bookmark_track_untrack_patterns() { #[test] fn test_bookmark_list() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); // Initialize remote refs test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "remote"]); @@ -1413,7 +1413,7 @@ fn test_bookmark_list() { #[test] fn test_bookmark_list_filtered() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.add_config(r#"revset-aliases."immutable_heads()" = "none()""#); // Initialize remote refs @@ -1638,7 +1638,7 @@ fn test_bookmark_list_filtered() { #[test] fn test_bookmark_list_much_remote_divergence() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); // Initialize remote refs test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "remote"]); @@ -1683,7 +1683,7 @@ fn test_bookmark_list_much_remote_divergence() { #[test] fn test_bookmark_list_tracked() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); // Initialize remote refs test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "remote"]); diff --git a/cli/tests/test_builtin_aliases.rs b/cli/tests/test_builtin_aliases.rs index c7b1ee56b..e20bd89a7 100644 --- a/cli/tests/test_builtin_aliases.rs +++ b/cli/tests/test_builtin_aliases.rs @@ -37,7 +37,7 @@ fn set_up(trunk_name: &str) -> (TestEnvironment, PathBuf) { &[ "git", "clone", - "--config-toml=git.auto-local-branch=true", + "--config-toml=git.auto-local-bookmark=true", origin_git_repo_path.to_str().unwrap(), "local", ], diff --git a/cli/tests/test_commit_template.rs b/cli/tests/test_commit_template.rs index 4c972bfa6..916b26fae 100644 --- a/cli/tests/test_commit_template.rs +++ b/cli/tests/test_commit_template.rs @@ -550,7 +550,7 @@ fn test_log_evolog_divergence() { #[test] fn test_log_bookmarks() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.add_config(r#"revset-aliases."immutable_heads()" = "none()""#); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "origin"]); diff --git a/cli/tests/test_git_clone.rs b/cli/tests/test_git_clone.rs index dd5fefb6c..fc50ee488 100644 --- a/cli/tests/test_git_clone.rs +++ b/cli/tests/test_git_clone.rs @@ -46,7 +46,7 @@ fn set_up_non_empty_git_repo(git_repo: &git2::Repository) { #[test] fn test_git_clone() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let git_repo_path = test_env.env_root().join("source"); let git_repo = git2::Repository::init(git_repo_path).unwrap(); @@ -160,7 +160,7 @@ fn test_git_clone() { #[test] fn test_git_clone_colocate() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let git_repo_path = test_env.env_root().join("source"); let git_repo = git2::Repository::init(git_repo_path).unwrap(); @@ -366,8 +366,8 @@ fn test_git_clone_remote_default_bookmark() { .reference("refs/heads/feature1", oid, false, "") .unwrap(); - // All fetched bookmarks will be imported if auto-local-branch is on - test_env.add_config("git.auto-local-branch = true"); + // All fetched bookmarks will be imported if auto-local-bookmark is on + test_env.add_config("git.auto-local-bookmark = true"); let (_stdout, stderr) = test_env.jj_cmd_ok(test_env.env_root(), &["git", "clone", "source", "clone1"]); insta::assert_snapshot!(stderr, @r###" @@ -396,8 +396,8 @@ fn test_git_clone_remote_default_bookmark() { revset-aliases.'trunk()' = "main@origin" "###); - // Only the default bookmark will be imported if auto-local-branch is off - test_env.add_config("git.auto-local-branch = false"); + // Only the default bookmark will be imported if auto-local-bookmark is off + test_env.add_config("git.auto-local-bookmark = false"); let (_stdout, stderr) = test_env.jj_cmd_ok(test_env.env_root(), &["git", "clone", "source", "clone2"]); insta::assert_snapshot!(stderr, @r###" @@ -501,7 +501,7 @@ fn test_git_clone_at_operation() { #[test] fn test_git_clone_with_remote_name() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let git_repo_path = test_env.env_root().join("source"); let git_repo = git2::Repository::init(git_repo_path).unwrap(); set_up_non_empty_git_repo(&git_repo); @@ -560,7 +560,7 @@ fn test_git_clone_trunk_deleted() { #[test] fn test_git_clone_with_depth() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let git_repo_path = test_env.env_root().join("source"); let git_repo = git2::Repository::init(git_repo_path).unwrap(); set_up_non_empty_git_repo(&git_repo); diff --git a/cli/tests/test_git_colocated.rs b/cli/tests/test_git_colocated.rs index 26d0b352a..a8c94c282 100644 --- a/cli/tests/test_git_colocated.rs +++ b/cli/tests/test_git_colocated.rs @@ -516,7 +516,7 @@ fn test_git_colocated_checkout_non_empty_working_copy() { #[test] fn test_git_colocated_fetch_deleted_or_moved_bookmark() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let origin_path = test_env.env_root().join("origin"); git2::Repository::init(&origin_path).unwrap(); test_env.jj_cmd_ok(&origin_path, &["git", "init", "--git-repo=."]); diff --git a/cli/tests/test_git_fetch.rs b/cli/tests/test_git_fetch.rs index 5b871f804..19bb76d1f 100644 --- a/cli/tests/test_git_fetch.rs +++ b/cli/tests/test_git_fetch.rs @@ -88,7 +88,7 @@ fn test_git_fetch_with_default_config() { #[test] fn test_git_fetch_default_remote() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "origin"); @@ -103,7 +103,7 @@ fn test_git_fetch_default_remote() { #[test] fn test_git_fetch_single_remote() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "rem1"); @@ -122,7 +122,7 @@ fn test_git_fetch_single_remote() { #[test] fn test_git_fetch_single_remote_all_remotes_flag() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "rem1"); @@ -140,7 +140,7 @@ fn test_git_fetch_single_remote_all_remotes_flag() { #[test] fn test_git_fetch_single_remote_from_arg() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "rem1"); @@ -155,7 +155,7 @@ fn test_git_fetch_single_remote_from_arg() { #[test] fn test_git_fetch_single_remote_from_config() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "rem1"); @@ -171,7 +171,7 @@ fn test_git_fetch_single_remote_from_config() { #[test] fn test_git_fetch_multiple_remotes() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "rem1"); @@ -192,7 +192,7 @@ fn test_git_fetch_multiple_remotes() { #[test] fn test_git_fetch_all_remotes() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "rem1"); @@ -210,7 +210,7 @@ fn test_git_fetch_all_remotes() { #[test] fn test_git_fetch_multiple_remotes_from_config() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "rem1"); @@ -265,7 +265,7 @@ fn test_git_fetch_nonexistent_remote_from_config() { #[test] fn test_git_fetch_from_remote_named_git() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let repo_path = test_env.env_root().join("repo"); init_git_remote(&test_env, "git"); let git_repo = git2::Repository::init(&repo_path).unwrap(); @@ -311,7 +311,7 @@ fn test_git_fetch_from_remote_named_git() { #[test] fn test_git_fetch_prune_before_updating_tips() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "origin"); @@ -339,7 +339,7 @@ fn test_git_fetch_prune_before_updating_tips() { #[test] fn test_git_fetch_conflicting_bookmarks() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "rem1"); @@ -367,7 +367,7 @@ fn test_git_fetch_conflicting_bookmarks() { #[test] fn test_git_fetch_conflicting_bookmarks_colocated() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let repo_path = test_env.env_root().join("repo"); let _git_repo = git2::Repository::init(&repo_path).unwrap(); // create_colocated_repo_and_bookmarks_from_trunk1(&test_env, &repo_path); @@ -430,7 +430,7 @@ fn create_trunk2_and_rebase_bookmarks(test_env: &TestEnvironment, repo_path: &Pa #[test] fn test_git_fetch_all() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.add_config(r#"revset-aliases."immutable_heads()" = "none()""#); let source_git_repo_path = test_env.env_root().join("source"); let _git_repo = git2::Repository::init(source_git_repo_path.clone()).unwrap(); @@ -579,7 +579,7 @@ fn test_git_fetch_all() { #[test] fn test_git_fetch_some_of_many_bookmarks() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.add_config(r#"revset-aliases."immutable_heads()" = "none()""#); let source_git_repo_path = test_env.env_root().join("source"); let _git_repo = git2::Repository::init(source_git_repo_path.clone()).unwrap(); @@ -795,7 +795,7 @@ fn test_git_fetch_some_of_many_bookmarks() { #[test] fn test_git_fetch_bookmarks_some_missing() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "origin"); @@ -883,7 +883,7 @@ fn test_git_fetch_bookmarks_some_missing() { #[test] fn test_git_fetch_undo() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let source_git_repo_path = test_env.env_root().join("source"); let _git_repo = git2::Repository::init(source_git_repo_path.clone()).unwrap(); @@ -960,7 +960,7 @@ fn test_git_fetch_undo() { #[test] fn test_fetch_undo_what() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let source_git_repo_path = test_env.env_root().join("source"); let _git_repo = git2::Repository::init(source_git_repo_path.clone()).unwrap(); @@ -1057,7 +1057,7 @@ fn test_fetch_undo_what() { #[test] fn test_git_fetch_remove_fetch() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "origin"); @@ -1101,7 +1101,7 @@ fn test_git_fetch_remove_fetch() { #[test] fn test_git_fetch_rename_fetch() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); let repo_path = test_env.env_root().join("repo"); add_git_remote(&test_env, &repo_path, "origin"); @@ -1142,7 +1142,7 @@ fn test_git_fetch_rename_fetch() { #[test] fn test_git_fetch_removed_bookmark() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let source_git_repo_path = test_env.env_root().join("source"); let _git_repo = git2::Repository::init(source_git_repo_path.clone()).unwrap(); @@ -1234,7 +1234,7 @@ fn test_git_fetch_removed_bookmark() { #[test] fn test_git_fetch_removed_parent_bookmark() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let source_git_repo_path = test_env.env_root().join("source"); let _git_repo = git2::Repository::init(source_git_repo_path.clone()).unwrap(); @@ -1347,7 +1347,7 @@ fn test_git_fetch_remote_only_bookmark() { .unwrap(); // Fetch using git.auto_local_bookmark = true - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); test_env.jj_cmd_ok(&repo_path, &["git", "fetch", "--remote=origin"]); insta::assert_snapshot!(get_bookmark_output(&test_env, &repo_path), @r###" feature1: mzyxwzks 9f01a0e0 message @@ -1366,7 +1366,7 @@ fn test_git_fetch_remote_only_bookmark() { .unwrap(); // Fetch using git.auto_local_bookmark = false - test_env.add_config("git.auto-local-branch = false"); + test_env.add_config("git.auto-local-bookmark = false"); test_env.jj_cmd_ok(&repo_path, &["git", "fetch", "--remote=origin"]); insta::assert_snapshot!(get_log_output(&test_env, &repo_path), @r###" ◆ 9f01a0e04879 message feature1 feature2@origin diff --git a/cli/tests/test_git_init.rs b/cli/tests/test_git_init.rs index fe2e38bb6..73ffa11b3 100644 --- a/cli/tests/test_git_init.rs +++ b/cli/tests/test_git_init.rs @@ -516,7 +516,7 @@ fn test_git_init_colocated_via_git_repo_path_symlink_gitlink() { #[test] fn test_git_init_colocated_via_git_repo_path_imported_refs() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); // Set up remote refs test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "remote"]); @@ -545,7 +545,7 @@ fn test_git_init_colocated_via_git_repo_path_imported_refs() { .unwrap(); }; - // With git.auto-local-branch = true + // With git.auto-local-bookmark = true let local_path = test_env.env_root().join("local1"); set_up_local_repo(&local_path); let (_stdout, stderr) = test_env.jj_cmd_ok(&local_path, &["git", "init", "--git-repo=."]); @@ -562,8 +562,8 @@ fn test_git_init_colocated_via_git_repo_path_imported_refs() { @origin: vvkvtnvv 230dd059 (empty) (no description set) "###); - // With git.auto-local-branch = false - test_env.add_config("git.auto-local-branch = false"); + // With git.auto-local-bookmark = false + test_env.add_config("git.auto-local-bookmark = false"); let local_path = test_env.env_root().join("local2"); set_up_local_repo(&local_path); let (_stdout, stderr) = test_env.jj_cmd_ok(&local_path, &["git", "init", "--git-repo=."]); diff --git a/cli/tests/test_git_private_commits.rs b/cli/tests/test_git_private_commits.rs index 7946f817c..a70a110bc 100644 --- a/cli/tests/test_git_private_commits.rs +++ b/cli/tests/test_git_private_commits.rs @@ -37,7 +37,7 @@ fn set_up() -> (TestEnvironment, PathBuf) { &[ "git", "clone", - "--config-toml=git.auto-local-branch=true", + "--config-toml=git.auto-local-bookmark=true", origin_git_repo_path.to_str().unwrap(), "local", ], diff --git a/cli/tests/test_git_push.rs b/cli/tests/test_git_push.rs index 4a34c2235..18522a502 100644 --- a/cli/tests/test_git_push.rs +++ b/cli/tests/test_git_push.rs @@ -38,7 +38,7 @@ fn set_up() -> (TestEnvironment, PathBuf) { &[ "git", "clone", - "--config-toml=git.auto-local-branch=true", + "--config-toml=git.auto-local-bookmark=true", origin_git_repo_path.to_str().unwrap(), "local", ], @@ -429,7 +429,7 @@ fn test_git_push_creation_unexpectedly_already_exists() { fn test_git_push_locally_created_and_rewritten() { let (test_env, workspace_root) = set_up(); // Ensure that remote bookmarks aren't tracked automatically - test_env.add_config("git.auto-local-branch = false"); + test_env.add_config("git.auto-local-bookmark = false"); // Push locally-created bookmark test_env.jj_cmd_ok(&workspace_root, &["new", "root()", "-mlocal 1"]); @@ -1085,7 +1085,7 @@ fn test_git_push_deleted() { #[test] fn test_git_push_conflicting_bookmarks() { let (test_env, workspace_root) = set_up(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); let git_repo = { let mut git_repo_path = workspace_root.clone(); git_repo_path.extend([".jj", "repo", "store", "git"]); diff --git a/cli/tests/test_init_command.rs b/cli/tests/test_init_command.rs index 9d6935cc7..69e75e13a 100644 --- a/cli/tests/test_init_command.rs +++ b/cli/tests/test_init_command.rs @@ -388,7 +388,7 @@ fn test_init_git_colocated_symlink_gitlink() { #[test] fn test_init_git_colocated_imported_refs() { let test_env = TestEnvironment::default(); - test_env.add_config("git.auto-local-branch = true"); + test_env.add_config("git.auto-local-bookmark = true"); // Set up remote refs test_env.jj_cmd_ok(test_env.env_root(), &["init", "remote", "--git"]); @@ -417,7 +417,7 @@ fn test_init_git_colocated_imported_refs() { .unwrap(); }; - // With git.auto-local-branch = true + // With git.auto-local-bookmark = true let local_path = test_env.env_root().join("local1"); set_up_local_repo(&local_path); let (_stdout, stderr) = test_env.jj_cmd_ok(&local_path, &["init", "--git-repo=."]); @@ -436,8 +436,8 @@ fn test_init_git_colocated_imported_refs() { @origin: vvkvtnvv 230dd059 (empty) (no description set) "###); - // With git.auto-local-branch = false - test_env.add_config("git.auto-local-branch = false"); + // With git.auto-local-bookmark = false + test_env.add_config("git.auto-local-bookmark = false"); let local_path = test_env.env_root().join("local2"); set_up_local_repo(&local_path); let (_stdout, stderr) = test_env.jj_cmd_ok(&local_path, &["init", "--git-repo=."]); diff --git a/docs/design/tracking-branches.md b/docs/design/tracking-branches.md index 68aaf21df..088e51528 100644 --- a/docs/design/tracking-branches.md +++ b/docs/design/tracking-branches.md @@ -6,7 +6,7 @@ This is a plan to implement more Git-like remote tracking branch UX. `jj` imports all remote branches to local branches by default. As described in [#1136], this doesn't interact nicely with Git if we have multiple Git remotes -with a number of branches. The `git.auto-local-branch` config can mitigate this +with a number of branches. The `git.auto-local-bookmark` config can mitigate this problem, but we'll get locally-deleted branches instead. The goal of this plan is to implement @@ -120,14 +120,14 @@ With the proposed data model, we can ### Tracking state -The `git.auto-local-branch` config knob is applied when importing new remote +The `git.auto-local-bookmark` config knob is applied when importing new remote branch. `jj branch` sub commands will be added to change the tracking state. ```rust fn default_state_for_newly_imported_branch(config, remote) { if remote == "git" { State::Tracking - } else if config["git.auto-local-branch"] { + } else if config["git.auto-local-bookmark"] { State::Tracking } else { State::New @@ -155,7 +155,7 @@ fn target_in_merge_context(known_target, state) { * New `remotes[remote].branches` corresponds to `branches[].remote_targets[remote]`. * `state = new|tracking` doesn't exist in the current model. It's determined - by `git.auto-local-branch` config. + by `git.auto-local-bookmark` config. ## Common command behaviors diff --git a/lib/src/settings.rs b/lib/src/settings.rs index 3b7551de9..6158debc8 100644 --- a/lib/src/settings.rs +++ b/lib/src/settings.rs @@ -50,11 +50,16 @@ pub struct GitSettings { impl GitSettings { pub fn from_config(config: &config::Config) -> Self { + let auto_local_bookmark = config + .get_bool("git.auto-local-bookmark") + .or_else(|_| config.get_bool("git.auto-local-branch")) + .unwrap_or(false); + let abandon_unreachable_commits = config + .get_bool("git.abandon-unreachable-commits") + .unwrap_or(true); GitSettings { - auto_local_bookmark: config.get_bool("git.auto-local-branch").unwrap_or(false), - abandon_unreachable_commits: config - .get_bool("git.abandon-unreachable-commits") - .unwrap_or(true), + auto_local_bookmark, + abandon_unreachable_commits, } } }