Replies: 3 comments 1 reply
-
The git object store is a big, directed graph of references between objects. Occasionally, you need to run garbage collection to remove old objects, when they have nothing pointing to them. To start the process, you begin by sweeping "from the roots", which are known objects you can always start from. You can find the object store under Git treats visible branches and references as the roots when doing garbage collection; however, this flies in the face of jj, which primarily revolves around unnamed branches and automatic "changeset evolution", which will discard old commits and allow you to return to them. So how do we keep things around? In reality, Git actually looks at the file called
So now things should be pretty clear: jj stores Git references in its "keep" directory, to keep pointers to jj-managed commits that exist in the operation log. That means when your editor decides to helpfully run a background GC or reprune (or Git does it automatically on its own when invoked), your jj repository won't be trashed. |
Beta Was this translation helpful? Give feedback.
-
Regarding Git extensions: I'm not quite sure how to make it ignore the jj/keep namespace. Maybe there's a way to filter references shown in the UX? I think most Git GUIs probably only show |
Beta Was this translation helpful? Give feedback.
-
Thank you all for your replays. Now I understand what is going on 😄 Cheers. |
Beta Was this translation helpful? Give feedback.
-
Hi.
I'm using Git Extensions for viewing git repositories. I noticed that jj creates lots of entries named
jj/keep/...
and I understand that those are temporary commits of working space. But I'm wondering, from the technical point of view, what are those exactly? Is it some kind of git tag? And second question - is there a way to clean them, so they don't clutter the view?Beta Was this translation helpful? Give feedback.
All reactions