From e0db60f6ce74d848e167dfa77cdcab0478c4b575 Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Wed, 27 Nov 2024 08:41:23 -0600 Subject: [PATCH] Add Colocate jj And git Directories For Project as a jj TIL --- README.md | 7 ++- ...cate-jj-and-git-directories-for-project.md | 59 +++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 jj/colocate-jj-and-git-directories-for-project.md diff --git a/README.md b/README.md index 89b95b2..1e908ab 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1518 TILs and counting..._ +_1519 TILs and counting..._ --- @@ -41,6 +41,7 @@ _1518 TILs and counting..._ * [Internet](#internet) * [Java](#java) * [JavaScript](#javascript) +* [jj](#jj) * [jq](#jq) * [Kitty](#kitty) * [Linux](#linux) @@ -569,6 +570,10 @@ _1518 TILs and counting..._ - [Yarn Commands Without The Emojis](javascript/yarn-commands-without-the-emojis.md) - [Yup Schemas Are Validated Asynchronously](javascript/yup-schemas-are-validated-asynchronously.md) +### jj + +- [Colocate jj And git Directories For Project](jj/colocate-jj-and-git-directories-for-project.md) + ### jq - [Combine An Array Of Objects Into A Single Object](jq/combine-an-array-of-objects-into-a-single-object.md) diff --git a/jj/colocate-jj-and-git-directories-for-project.md b/jj/colocate-jj-and-git-directories-for-project.md new file mode 100644 index 0000000..2a2e6fe --- /dev/null +++ b/jj/colocate-jj-and-git-directories-for-project.md @@ -0,0 +1,59 @@ +# Colocate jj And git Directories For Project + +When doing a standard clone of a git repository with `jj`, you'll get a copy of +the project with a `.jj` directory containing the version control information. + +```bash +$ jj git clone git@github.com:jbranchaud/my-repo +Fetching into new repo in "/path/of/local/repo" +... + +$ exa --tree --all -L 1 +. +├── .gitignore +├── .jj +├── Cargo.lock +├── Cargo.toml +└── src +``` + +This is fine if I'm completely familiar with using +[jujutsu](https://martinvonz.github.io/jj/latest/). However, if I'm coming from +`git` and still learning, then it would be nice to be able to fallback to +familiar `git` commands when needed. + +But without a `.git` directory, I get this: + +```bash +$ git log +fatal: not a git repository (or any of the parent directories): .git +``` + +When cloning a git repo with `jj`, I can instruct it to _colocate_ which means +that it will create both the `.jj` and the `.git` data directories in the +project. + +```bash +$ jj git clone --colocate git@github.com:jbranchaud/my-repo +Fetching into new repo in "/path/of/local/repo" +... + +$ exa --tree --all -L 1 +. +├── .git +├── .gitignore +├── .jj +├── Cargo.lock +├── Cargo.toml +└── src +``` + +Now I can run `jj` commands or `git` commands: + +```bash +$ git log +commit 0c72abbb83657096677f9a3d5ddc7bce20839165 (HEAD, origin/trunk, trunk) +... +``` + +[source](https://martinvonz.github.io/jj/latest/git-compatibility/#co-located-jujutsugit-repos)