mirror of
https://github.com/jj-vcs/jj.git
synced 2025-12-23 06:01:01 +00:00
Closes https://github.com/jj-vcs/jj/issues/7189 Colocated repos have some advantages and some disadvantages. On the whole, I think making Git repos colocated by default is a better trade-off, especially for new users. With the `git.colocate` setting, (experienced) users can easily change this according to preference. A non-exhaustive list of pros and cons of colocated repos: pros: * Many code editors show the changes one is currently working on based on Git's "dirty worktree". * There are a lot of tools that integrate with Git which don't work at all in non-colocated repositories. * There are a lot of Git features that Jujutsu doesn't have yet. When users ask for them, the answer is usually: "Just colocate your repo and run git directly for now." It's a strength that Jujutsu can focus on what makes it special and not have to rush the reimplementation of every niche feature of Git. Examples: `git rebase` tracking file renames, `git bisect`, `git tag`, `git range-diff`, submodules. cons: * Jujutsu performs worse in colocated repositories with lots of refs, because of the automatic `jj git import`. * Colocated repos make branch@git references show up in Jujutsu output, which is usually just aesthetically displeasing or possibly even confusing to inexperienced users. * Interleaving jj and (mutating) git commands can lead to confusing situations. Examples: * Creating a commit with git instead of jj will often leave a duplicate "work in progress" commit in Jujutsu's log. * Some IDEs periodically run `git fetch` in the background. This can lead to conflicted branches and divergent change IDs, something many people struggle with. |
||
|---|---|---|
| .. | ||
| design | ||
| governance | ||
| guides | ||
| images | ||
| technical | ||
| bookmarks.md | ||
| changelog.md | ||
| cli-reference.md | ||
| code-of-conduct.md | ||
| community_tools.md | ||
| config-schema.json | ||
| config.md | ||
| config.toml | ||
| conflicts.md | ||
| contributing.md | ||
| core_tenets.md | ||
| design_doc_blueprint.md | ||
| design_docs.md | ||
| FAQ.md | ||
| filesets.md | ||
| git-command-table.md | ||
| git-command-table.yml | ||
| git-comparison.md | ||
| git-compatibility.md | ||
| github.md | ||
| glossary.md | ||
| index.md | ||
| install-and-setup.md | ||
| operation-log.md | ||
| paid_contributors.md | ||
| related-work.md | ||
| releasing.md | ||
| revsets.md | ||
| revsets.toml | ||
| roadmap.md | ||
| sapling-comparison.md | ||
| style_guide.md | ||
| templates.md | ||
| testimonials.md | ||
| tutorial.md | ||
| windows.md | ||
| working-copy.md | ||