In this episode of Brains & Beards, Patryk and Wojciech follow up their enthusiastic JJ praise by honestly walking through what they don’t like about the tool yet. They talk about how onboarding is still rough: official docs are thin, advanced tutorials are unfinished, and a lot of essential knowledge is buried in the JJ Discord. They also cover practical pain points like awkward rebasing, manual bookmark/tag management, divergent commits when working with GitHub, and missing higher-level commands that currently require custom configs and refsets. Despite these drawbacks and early-stage growing pains, they both still use JJ daily, feel the trade-offs are clearly worth it, and encourage listeners to try it alongside Git while keeping an eye on upcoming “JJ hub”–style hosting tools.
Key Moments
Onboarding & docs are weak: They highlight that JJ’s official website has limited documentation, there’s no clear “I’m a Git user, how do I switch?” guide, and the flexibility of many possible workflows can be overwhelming for newcomers.
Tutorials that stop halfway: Wojciech describes learning JJ via Steve Klabnik’s tutorial (great for basics and GitHub PRs), but notes it stops at a “to be continued” point and doesn’t cover advanced workflows like stacked PRs or mega merges.
Rebase is harder to discover: Wojciech explains that he frequently has to look up how to “rebase” his feature branches in JJ, because the commands are less obvious than in Git and official docs feel more like technical references than user tutorials.
AI help is hit-and-miss: They mention that asking AI tools about JJ used to produce outdated or incorrect commands; it’s improved, but still tends to lag behind JJ’s latest versions.
Powerful primitives, missing batteries-included UX: JJ gives very low-level, powerful tools (like refsets and named bookmarks), but many higher-level conveniences are missing, forcing users to copy snippets from Discord or write custom commands (like tug to move bookmarks).
Refsets are strong but complex: Refsets are described as a powerful language for describing revision sets, but way too advanced for beginners; newcomers shouldn’t be forced to learn them in their first months just to get common workflows.
Bookmark and branch friction: Because named bookmarks in JJ effectively stand in for Git branches, users must manually move and update them, which can feel as clumsy as moving tags in Git unless you script it yourself.
Tagging still done in Git: Wojciech shares that for release tagging he still drops down to raw Git commands, since he doesn’t have a smooth JJ-based tagging workflow.
GitHub & divergent commits: A big pain point is that when pushing/pulling from GitHub, commits may get different IDs, resulting in “divergent changes” that JJ can’t automatically reconcile, so users must manually pick which ones to keep.
Ecosystem still catching up: They mention tools like Tangled and an unreleased JJ-focused hosting platform being built by core maintainers, hoping it will be for JJ what GitHub was for Git.
Performance & features on large repos: From community feedback, they note JJ can be slower on very large repos due to tracking every file change, and features like workspaces aren’t supported yet.
Interactive rebase vs JJ workflows: Some users miss Git’s powerful interactive rebase that can reshuffle many commits at once; in JJ similar effects often require more manual work or complex refsets, though many gaps already have open issues and planned improvements.
Real-world experience is still positive: Despite the rough edges, both hosts say working with GitHub is still nicer through JJ than pure Git, especially when checking out others’ branches and avoiding git stash/cleanup chores.
Maturity and trade-offs: They frame JJ’s current state as “growing pains” of a young tool (v0.33), with drawbacks that are small compared to the benefits for their everyday work.
Closing encouragement: They stress they’ve been JJ-only for months, recommend listeners give it a try alongside Git, and suggest re-listening to the previous positive episode or watching their Brain Picks YouTube video for a more enthusiastic, hands-on view.
1
00:00:00,000 --> 00:00:03,708
(Music)
2
00:00:10,500 --> 00:00:13,125
Hello beautiful people, I'm Patrick and
3
00:00:13,125 --> 00:00:16,041
I'm Wojciech and you are listening to
4
00:00:16,041 --> 00:00:18,916
Brains and Birds show episode number 21
5
00:00:18,916 --> 00:00:20,458
where we explain what we
6
00:00:20,458 --> 00:00:22,791
don't like about JJ enjoy
7
00:00:25,375 --> 00:00:27,750
so hello Patrick, hello Wojciech.
8
00:00:28,791 --> 00:00:31,375
In the the last episode was very positive
9
00:00:31,833 --> 00:00:34,500
about a new tool that we've both been
10
00:00:34,500 --> 00:00:39,416
enjoying lately a lot well so much that
11
00:00:39,416 --> 00:00:43,083
we actually came back from our podcast
12
00:00:43,083 --> 00:00:47,166
Sabatko from the grave about it but today
13
00:00:47,166 --> 00:00:50,208
it's gonna be a bit different where we're
14
00:00:50,208 --> 00:00:51,750
gonna talk about things that are missing
15
00:00:52,083 --> 00:00:54,916
things that we might not like about it
16
00:00:54,916 --> 00:00:57,875
because it's like not all
17
00:00:57,875 --> 00:00:59,708
unicorns and rainbows right?
18
00:01:00,916 --> 00:01:03,291
Yes this is not gonna be a very long
19
00:01:03,375 --> 00:01:05,541
episode I think first of all because I
20
00:01:05,541 --> 00:01:07,458
didn't have my breakfast and I'm really
21
00:01:07,458 --> 00:01:09,583
hungry and the second of all is that
22
00:01:09,750 --> 00:01:12,875
there is not that much which needs
23
00:01:12,875 --> 00:01:16,375
improvement and many of you won't even
24
00:01:16,375 --> 00:01:18,750
struggle with with the
25
00:01:18,750 --> 00:01:20,041
stuff we want to mention here.
26
00:01:20,333 --> 00:01:21,583
Yeah that's true.
27
00:01:21,791 --> 00:01:24,375
So how do we want to start?
28
00:01:25,041 --> 00:01:28,583
Well to be honest I think you should lead
29
00:01:28,583 --> 00:01:31,208
the conversation because personally I
30
00:01:31,208 --> 00:01:33,250
don't see that many things that I'm
31
00:01:33,250 --> 00:01:35,916
missing in my day-to-day work there are
32
00:01:35,916 --> 00:01:38,541
like two small things that I have to work
33
00:01:38,541 --> 00:01:41,708
around but other than that I'm pretty
34
00:01:41,708 --> 00:01:45,583
much set with JJ like it's been more or
35
00:01:45,583 --> 00:01:47,250
less smooth sailing so maybe
36
00:01:47,250 --> 00:01:49,708
you start the nightship in.
37
00:01:50,500 --> 00:01:53,583
Yeah I have the similar similar
38
00:01:53,583 --> 00:01:56,875
experience as you like I had to a little
39
00:01:56,875 --> 00:02:00,416
bit make a little bit of research to put
40
00:02:00,416 --> 00:02:04,166
the list here but nevertheless you know
41
00:02:04,166 --> 00:02:06,583
like we are already set up and the tool
42
00:02:06,583 --> 00:02:09,208
is configured the way we like to have but
43
00:02:10,250 --> 00:02:12,083
I don't know about you but I need to need
44
00:02:12,083 --> 00:02:15,125
it to do some changes and my one of the
45
00:02:15,125 --> 00:02:16,875
biggest problem is like for the new
46
00:02:16,875 --> 00:02:17,916
commerce especially is
47
00:02:17,916 --> 00:02:20,916
how do you learn about JJ?
48
00:02:21,250 --> 00:02:24,791
They have a web page with some
49
00:02:24,791 --> 00:02:29,166
documentation but not much and there is
50
00:02:29,166 --> 00:02:32,083
what I'm missing there there is no like a
51
00:02:32,083 --> 00:02:34,958
guide I'm you know like I'm a kid user I
52
00:02:34,958 --> 00:02:38,291
want to switch to JJ and how what is the
53
00:02:38,291 --> 00:02:39,833
best way to do and the
54
00:02:39,833 --> 00:02:41,541
problem with JJ there is like many
55
00:02:42,541 --> 00:02:45,541
workflows you can follow and it's great
56
00:02:45,541 --> 00:02:47,750
to have the flexibility but as well it
57
00:02:47,750 --> 00:02:50,458
can be overwhelming for for you if you
58
00:02:50,458 --> 00:02:53,875
don't know where to start and of course
59
00:02:53,875 --> 00:02:56,333
the tool is very new I mean the version
60
00:02:56,333 --> 00:02:59,208
is 0.33 right now so
61
00:02:59,208 --> 00:03:00,416
it's like really beginning
62
00:03:01,458 --> 00:03:04,875
of the journey but what they're trying to
63
00:03:04,875 --> 00:03:08,041
do is to use the the strength of the
64
00:03:08,041 --> 00:03:09,583
community and they link to the third
65
00:03:09,583 --> 00:03:12,375
party tutorials which are great but even
66
00:03:12,375 --> 00:03:15,041
those tutorials are not completed so you
67
00:03:15,041 --> 00:03:17,541
like you go through I don't know
68
00:03:17,541 --> 00:03:20,000
two-third of it and then work in progress
69
00:03:20,000 --> 00:03:24,000
right yeah and the the the biggest amount
70
00:03:24,000 --> 00:03:27,041
of knowledge is sadly hidden behind the
71
00:03:27,041 --> 00:03:31,833
discord which is a common thing lately so
72
00:03:31,833 --> 00:03:34,416
the the discord channel is very
73
00:03:34,416 --> 00:03:37,708
structured so we have a question section
74
00:03:37,708 --> 00:03:40,916
where you can search and find your
75
00:03:40,916 --> 00:03:44,500
answers if if you like to use this tool
76
00:03:44,500 --> 00:03:47,125
but I still think this should be a web
77
00:03:47,125 --> 00:03:50,083
page and not you know like third party
78
00:03:50,083 --> 00:03:52,750
application hiding all the knowledge to
79
00:03:52,750 --> 00:03:54,541
be honest that the people there the
80
00:03:54,541 --> 00:03:56,833
community is super helpful and they
81
00:03:56,833 --> 00:03:59,583
always stress that there is there are no
82
00:04:00,333 --> 00:04:02,500
basic questions you can really ask
83
00:04:02,500 --> 00:04:04,833
everything from the most complicated ones
84
00:04:04,833 --> 00:04:07,000
to the to the really basic ones how do I
85
00:04:07,000 --> 00:04:09,500
start and so on and everybody is replying
86
00:04:09,500 --> 00:04:13,375
in matter of of hours so you you can move
87
00:04:13,375 --> 00:04:15,833
on very fast but you need to use the
88
00:04:15,833 --> 00:04:17,833
discord if you want to learn the most of
89
00:04:17,833 --> 00:04:20,125
it I think yeah that's true I had a
90
00:04:20,125 --> 00:04:22,125
similar experience I think when I
91
00:04:22,125 --> 00:04:25,541
originally learned it I followed Steve
92
00:04:25,541 --> 00:04:28,333
Klabnik's tutorial exactly which was
93
00:04:28,333 --> 00:04:30,375
great to to get started
94
00:04:33,041 --> 00:04:35,833
it's funny because I remember I followed
95
00:04:35,833 --> 00:04:38,208
his tutorials back in the day when I was
96
00:04:38,208 --> 00:04:40,791
using Ruby on Rails and then later when I
97
00:04:40,791 --> 00:04:42,250
was learning Rust and
98
00:04:42,250 --> 00:04:44,791
now it was funny to me that
99
00:04:46,000 --> 00:04:48,541
why open the the first one from the JJ
100
00:04:48,541 --> 00:04:51,375
website and it's him all over again but
101
00:04:51,375 --> 00:04:54,041
he makes great tutorials so this was
102
00:04:54,041 --> 00:04:55,625
great to get started and I really love
103
00:04:55,625 --> 00:04:58,708
the section about working with github
104
00:04:58,708 --> 00:05:01,750
pull requests because the one thing is
105
00:05:01,750 --> 00:05:03,375
how do you develop locally but the other
106
00:05:03,375 --> 00:05:06,500
thing is that I think most of us are are
107
00:05:06,500 --> 00:05:09,666
working in teams and those teams are are
108
00:05:09,666 --> 00:05:12,083
using a lot of them are using github
109
00:05:12,083 --> 00:05:15,208
maybe some other tools but basically you
110
00:05:15,208 --> 00:05:18,541
have to be a secret JJ user and just fit
111
00:05:18,541 --> 00:05:20,625
into the existing git workflow of the
112
00:05:20,625 --> 00:05:24,708
whole team but but yeah at some point I
113
00:05:24,708 --> 00:05:27,083
hit the to be continued section and
114
00:05:28,083 --> 00:05:31,833
then there was on my own and I
115
00:05:31,833 --> 00:05:34,041
think this is exactly at this
116
00:05:35,041 --> 00:05:37,375
well the tutorial didn't move further is
117
00:05:37,375 --> 00:05:38,958
still on the same point where you
118
00:05:38,958 --> 00:05:41,000
finished it some I don't know a year ago
119
00:05:41,000 --> 00:05:46,791
so yeah yeah but the only the only thing
120
00:05:46,791 --> 00:05:48,916
they are like you know the basics are
121
00:05:48,916 --> 00:05:50,791
there you can learn the tool from this
122
00:05:50,791 --> 00:05:52,916
tutorial just the you know the cool stuff
123
00:05:52,916 --> 00:05:55,208
you know like how do you do stacked prs
124
00:05:55,208 --> 00:05:56,958
or like mega mergers and this kind of
125
00:05:56,958 --> 00:05:58,625
things I think this is not yet covered
126
00:05:58,625 --> 00:06:01,791
there I don't mind I hate stacked prs
127
00:06:01,791 --> 00:06:07,208
with a passion and and once you get
128
00:06:07,208 --> 00:06:09,541
stacked prs out of the question you don't
129
00:06:09,541 --> 00:06:11,208
have to do mega merges so to prove
130
00:06:11,208 --> 00:06:13,666
ourselves we won yeah exactly so this is
131
00:06:13,666 --> 00:06:16,041
you know the thing in JJ I have those
132
00:06:16,041 --> 00:06:19,916
points but many of you you won't ever met
133
00:06:19,916 --> 00:06:22,083
this problem because you you do different
134
00:06:22,083 --> 00:06:24,833
workflows one thing that I face pretty
135
00:06:24,833 --> 00:06:30,166
often is rebasing and this is I'm used to
136
00:06:30,166 --> 00:06:33,500
the way I rebased in git mostly the the
137
00:06:33,500 --> 00:06:35,500
situation is I'm running my feature
138
00:06:35,500 --> 00:06:38,458
branch the main branch got updated that I
139
00:06:38,458 --> 00:06:41,541
want to just get those comments into mine
140
00:06:41,541 --> 00:06:43,416
without doing this merging
141
00:06:43,416 --> 00:06:44,666
back and forth all the time
142
00:06:46,458 --> 00:06:51,375
and I don't do it often because I use I
143
00:06:51,375 --> 00:06:53,500
try to run my feature branch is pretty
144
00:06:53,500 --> 00:06:57,041
small and get the merged early but I
145
00:06:57,041 --> 00:06:59,875
noticed that whenever I want to rebase I
146
00:06:59,875 --> 00:07:02,416
have to like look it up again and as you
147
00:07:02,416 --> 00:07:04,875
say like the documentation is oh well
148
00:07:04,875 --> 00:07:08,333
it's not the the way it's documented on
149
00:07:08,333 --> 00:07:12,791
the website I don't find it that useful I
150
00:07:12,791 --> 00:07:14,750
usually look up like third-party
151
00:07:14,750 --> 00:07:17,791
materials about it to explain it in a way
152
00:07:17,791 --> 00:07:22,583
that clicks with me because also what is
153
00:07:22,583 --> 00:07:24,458
a good technical documentation is not
154
00:07:24,458 --> 00:07:27,375
necessarily great as the user tutorial
155
00:07:27,375 --> 00:07:30,458
right like the if you don't understand
156
00:07:30,458 --> 00:07:32,375
all the vocabulary sometimes it's hard to
157
00:07:32,375 --> 00:07:35,125
follow and while it's technically correct
158
00:07:35,125 --> 00:07:36,750
and explains exactly what the command
159
00:07:36,750 --> 00:07:40,291
does it's sometimes a question what
160
00:07:40,291 --> 00:07:43,458
comment to use for a particular thing you
161
00:07:43,458 --> 00:07:45,583
used to do in a different way it's it's
162
00:07:45,583 --> 00:07:49,041
hard to find and also the AI help is not
163
00:07:49,041 --> 00:07:52,416
there yet oh well it got improved many
164
00:07:52,416 --> 00:07:55,750
times I can ask now chat GPT and it knows
165
00:07:55,750 --> 00:07:59,083
about JJ and can come up with some not
166
00:07:59,083 --> 00:08:01,375
bad stuff the problem is that usually
167
00:08:01,375 --> 00:08:04,500
it's like one or two versions behind so
168
00:08:04,500 --> 00:08:07,208
doesn't know about all the new things I
169
00:08:07,208 --> 00:08:09,333
had poor experience and I stopped asking
170
00:08:09,333 --> 00:08:12,041
like it was inventing new comments or
171
00:08:12,041 --> 00:08:14,625
like explaining things that were not true
172
00:08:14,625 --> 00:08:17,500
and yeah now it's better now it's better
173
00:08:17,500 --> 00:08:19,333
okay cool I'm gonna give it a shot again
174
00:08:19,333 --> 00:08:23,458
but yeah mostly like my my pet peeve is
175
00:08:23,458 --> 00:08:26,791
the the way you do rebase but probably
176
00:08:26,791 --> 00:08:30,041
the answer there is to just like create
177
00:08:30,041 --> 00:08:33,375
my own config for it yeah and this is one
178
00:08:33,375 --> 00:08:35,458
of the other things which I wanted to
179
00:08:35,458 --> 00:08:37,625
mention is like there are a lot of a lot
180
00:08:37,625 --> 00:08:40,333
of basic tools which are very powerful
181
00:08:40,333 --> 00:08:41,791
because you can you know connect them
182
00:08:41,791 --> 00:08:43,625
together and do everything what you want
183
00:08:43,625 --> 00:08:47,250
manually but there are like lack of of
184
00:08:47,250 --> 00:08:50,375
some more advanced stuff like for example
185
00:08:51,208 --> 00:08:54,166
you are pressed to use the named
186
00:08:54,166 --> 00:08:56,208
bookmarks because this is something like
187
00:08:56,208 --> 00:08:59,333
so basically name bookmark is a point
188
00:08:59,333 --> 00:09:02,000
it's like a tag in git it just points to
189
00:09:02,000 --> 00:09:05,666
one specific commit or change in your
190
00:09:05,666 --> 00:09:08,541
repository and we use it in jj to
191
00:09:08,541 --> 00:09:11,500
communicate with git like because the
192
00:09:11,500 --> 00:09:13,250
name of the bookmark would be a little
193
00:09:13,250 --> 00:09:16,875
bit corresponds then not semantically but
194
00:09:16,875 --> 00:09:20,125
how we use it as as would correspond to
195
00:09:20,125 --> 00:09:26,041
git branches so if you do a change to to
196
00:09:26,041 --> 00:09:28,583
this branch after pushing a bookmark you
197
00:09:28,583 --> 00:09:31,541
have to update it somehow and this is
198
00:09:31,541 --> 00:09:34,958
like the same cumbersome as moving and
199
00:09:34,958 --> 00:09:39,291
tag in git but in you usually don't move
200
00:09:39,291 --> 00:09:44,916
the tags in git because you can delete
201
00:09:44,916 --> 00:09:49,208
and reapply but it's like cumbersome but
202
00:09:49,208 --> 00:09:51,541
here we have to do it because we use the
203
00:09:51,541 --> 00:09:54,416
name bookmarks as branches and this is
204
00:09:54,416 --> 00:09:56,416
like the everyday work so you're gonna
205
00:09:56,416 --> 00:09:58,833
move them so everybody has like a special
206
00:09:58,833 --> 00:10:02,166
command which usually it's called tag and
207
00:10:02,166 --> 00:10:05,208
then t u g and then you
208
00:10:06,708 --> 00:10:08,708
put some magic things inside which
209
00:10:08,708 --> 00:10:11,833
basically finds the commit where the
210
00:10:11,833 --> 00:10:13,666
bookmark was before and moves it to the
211
00:10:13,666 --> 00:10:19,583
top but you don't get it from from as as
212
00:10:19,583 --> 00:10:22,250
you know like batteries but you have to
213
00:10:22,250 --> 00:10:26,750
write it on your own and then like rebase
214
00:10:26,750 --> 00:10:28,500
or branches advance this is as well
215
00:10:28,500 --> 00:10:30,875
something which which is very easy to do
216
00:10:30,875 --> 00:10:32,875
but you're not gonna find it on your own
217
00:10:32,875 --> 00:10:35,000
how to do it because you again needs some
218
00:10:35,000 --> 00:10:37,416
special command or in this case like
219
00:10:37,416 --> 00:10:41,083
special refset refset is a super powerful
220
00:10:41,083 --> 00:10:44,250
language to describe the sets of revision
221
00:10:44,250 --> 00:10:46,500
you are interested in to modify or
222
00:10:46,500 --> 00:10:49,458
display and then you you can do
223
00:10:49,458 --> 00:10:51,041
everything with that but it's very
224
00:10:51,041 --> 00:10:54,541
complicated so it's not very good for
225
00:10:54,541 --> 00:10:58,083
beginners and somebody already put it on
226
00:10:58,083 --> 00:11:01,375
discord that you should not i mean like a
227
00:11:01,375 --> 00:11:04,333
new comer shouldn't be pushed to to check
228
00:11:04,333 --> 00:11:07,458
how refset works in in your i don't know
229
00:11:07,666 --> 00:11:10,583
first half a year of using jj everything
230
00:11:10,583 --> 00:11:12,166
should be like included
231
00:11:13,750 --> 00:11:18,125
in the more configurable tools let's say
232
00:11:18,125 --> 00:11:23,000
which are not and so this is like you can
233
00:11:23,000 --> 00:11:25,000
do a lot in jj everything what you want
234
00:11:25,000 --> 00:11:27,500
but you're gonna end up you know looking
235
00:11:27,500 --> 00:11:30,000
uh in the internet and copying some
236
00:11:30,000 --> 00:11:32,500
snippets back and forth just to make it
237
00:11:32,500 --> 00:11:34,666
work till you start to
238
00:11:34,666 --> 00:11:36,625
understand how the tool really works
239
00:11:37,666 --> 00:11:40,750
which is not that friendly yeah that's
240
00:11:40,750 --> 00:11:43,958
true actually i did not know about the
241
00:11:43,958 --> 00:11:47,083
tag idea i've been like moving the
242
00:11:47,083 --> 00:11:50,333
bookmarks manually but i only actually
243
00:11:50,333 --> 00:11:53,125
move them i don't move them while i work
244
00:11:53,125 --> 00:11:55,125
i only move them when i have to interact
245
00:11:55,125 --> 00:11:57,458
with github yeah i'm either like checking
246
00:11:57,458 --> 00:11:59,750
out pull requests or updating it and so
247
00:11:59,750 --> 00:12:03,041
on so just before like pushing to get so
248
00:12:03,041 --> 00:12:04,583
it did not bother me that much but
249
00:12:04,583 --> 00:12:07,166
actually it would be uh comfortable not
250
00:12:07,166 --> 00:12:09,166
to like it would be great not to have to
251
00:12:09,166 --> 00:12:11,500
do it at all like or have a simpler
252
00:12:11,500 --> 00:12:14,416
command for it but you mentioned
253
00:12:14,416 --> 00:12:16,958
something that was my other pain point
254
00:12:16,958 --> 00:12:20,958
well maybe not that much of a pain point
255
00:12:21,041 --> 00:12:23,708
but that's something that i drop down to
256
00:12:23,708 --> 00:12:27,916
git to be able to do uh which is tagging
257
00:12:27,916 --> 00:12:31,208
like the using the git tags i did not see
258
00:12:31,208 --> 00:12:35,250
an easy way to create git tags or using
259
00:12:35,250 --> 00:12:37,875
jj so i have a workflow when i tag the
260
00:12:37,875 --> 00:12:40,708
release comments so i write down the new
261
00:12:40,708 --> 00:12:43,458
version then you build numbers i create a
262
00:12:43,458 --> 00:12:46,458
comment with it i push it and then i tag
263
00:12:46,458 --> 00:12:49,083
it and the part that does the tagging i
264
00:12:49,083 --> 00:12:51,833
drop down to git comments i cannot use jj
265
00:12:51,833 --> 00:12:53,500
for that well i don't know how to use jj
266
00:12:53,500 --> 00:12:56,083
for that and it's something that's simple
267
00:12:56,083 --> 00:12:59,375
enough that i can just do it in git push
268
00:12:59,375 --> 00:13:02,458
tags with git and go back to my normal
269
00:13:02,458 --> 00:13:06,083
workflow but the reason it works well is
270
00:13:06,083 --> 00:13:08,750
that uh it's part of the flow that
271
00:13:08,791 --> 00:13:11,875
results in my jj history being exactly
272
00:13:11,875 --> 00:13:15,791
the same as my git history because if it
273
00:13:15,791 --> 00:13:17,208
were not then it would
274
00:13:17,208 --> 00:13:19,916
be a problem possibly
275
00:13:21,291 --> 00:13:24,208
but you can you know go back to i mean
276
00:13:24,208 --> 00:13:26,916
you can use git and jj at the same time
277
00:13:26,916 --> 00:13:29,125
in the same repository which is always
278
00:13:29,125 --> 00:13:32,458
cool you know yeah yeah totally totally
279
00:13:32,458 --> 00:13:36,333
it's just uh i'm a you shouldn't probably
280
00:13:36,333 --> 00:13:38,375
be mixing commands that you do some
281
00:13:38,375 --> 00:13:40,416
things with git commands and some of them
282
00:13:40,416 --> 00:13:44,500
with jj commands because where your jj
283
00:13:44,500 --> 00:13:47,416
head is it's not exactly where your git
284
00:13:47,416 --> 00:13:50,958
head is right especially when you're
285
00:13:51,125 --> 00:13:55,500
working with named changes like the uh i
286
00:13:55,500 --> 00:14:00,000
i try to just use jj commands and i only
287
00:14:00,000 --> 00:14:02,916
drop down to git for sometimes for
288
00:14:02,916 --> 00:14:05,375
looking at the logs because i have some
289
00:14:05,958 --> 00:14:08,916
old git scripts to to show the logs in a
290
00:14:08,916 --> 00:14:11,708
way i like it and i usually don't need
291
00:14:11,708 --> 00:14:14,958
them in jj i i rarely need them but
292
00:14:14,958 --> 00:14:16,500
sometimes i want to check it and i use
293
00:14:16,500 --> 00:14:18,958
the git command and the tagging that
294
00:14:18,958 --> 00:14:22,958
that's the two use cases yeah i mean the
295
00:14:22,958 --> 00:14:25,958
the logs are super powerful in jj you can
296
00:14:25,958 --> 00:14:28,791
change everything there colors and what
297
00:14:28,791 --> 00:14:31,708
is displayed like i have one which if i
298
00:14:31,708 --> 00:14:35,000
do the normal jj log output if there is
299
00:14:35,000 --> 00:14:37,250
no description but there are changes i
300
00:14:37,250 --> 00:14:39,000
gonna see what files are changed in the
301
00:14:39,000 --> 00:14:42,833
log if not it looks the same as normal so
302
00:14:42,833 --> 00:14:45,458
you you can you can go crazy but exactly
303
00:14:45,458 --> 00:14:48,500
you have to learn a lot of about ref sets
304
00:14:48,500 --> 00:14:52,041
or you you find somebody who done this
305
00:14:52,041 --> 00:14:55,750
work for you already or maybe you you you
306
00:14:55,750 --> 00:14:58,833
can use it or modify a little bit to your
307
00:14:58,833 --> 00:15:03,833
needs will be fair uh i'm i think i get a
308
00:15:03,833 --> 00:15:06,916
lot of value out of jj without having a
309
00:15:06,916 --> 00:15:09,375
big config file like i'm running the
310
00:15:09,375 --> 00:15:12,750
default logs and it's good enough it's
311
00:15:12,750 --> 00:15:15,208
not great like there as you mentioned
312
00:15:15,208 --> 00:15:17,333
there are some features that i don't have
313
00:15:17,333 --> 00:15:20,083
and it would be great to have them but i
314
00:15:20,083 --> 00:15:22,708
was not like really forced to to add them
315
00:15:22,708 --> 00:15:24,958
i just have some basic configuration i
316
00:15:24,958 --> 00:15:27,000
know 15 lines or 10 lines or something
317
00:15:27,000 --> 00:15:30,125
like this and that includes my like uh
318
00:15:30,125 --> 00:15:33,291
name and email and like the the super
319
00:15:33,291 --> 00:15:37,750
basic config and i'm good to go yeah
320
00:15:37,750 --> 00:15:40,166
exactly the only thing probably why i
321
00:15:40,166 --> 00:15:42,375
have those things and you don't is
322
00:15:42,375 --> 00:15:44,083
because i'm sitting in this discord
323
00:15:44,083 --> 00:15:46,291
channel and i'm you know like learning
324
00:15:46,291 --> 00:15:49,291
from the questions and people crazy ideas
325
00:15:49,291 --> 00:15:51,958
and i just copy them and try to use them
326
00:15:51,958 --> 00:15:53,833
if i like them they stay in my config if
327
00:15:53,833 --> 00:15:56,625
not today not but they are not necessary
328
00:15:56,625 --> 00:15:59,166
definitely not necessary you you you have
329
00:15:59,166 --> 00:16:02,041
what you need from uh from the get-go
330
00:16:02,041 --> 00:16:05,041
yeah but there's like we mentioned that
331
00:16:05,041 --> 00:16:08,000
already a few times uh there is a problem
332
00:16:08,000 --> 00:16:10,708
definitely that's that's the point we
333
00:16:10,708 --> 00:16:13,708
have to mention it that there is no much
334
00:16:13,708 --> 00:16:17,375
of jj support online because on some
335
00:16:17,375 --> 00:16:19,500
point you have to share your work with
336
00:16:19,500 --> 00:16:22,458
somebody else via github or github or
337
00:16:22,458 --> 00:16:25,458
whatever else and and most of those tools
338
00:16:25,458 --> 00:16:28,333
are not jj friendly especially github
339
00:16:29,583 --> 00:16:32,333
so you can still so that the problem is
340
00:16:32,333 --> 00:16:35,916
that when you have the history on your
341
00:16:35,916 --> 00:16:38,875
own machine it's all fine but if you push
342
00:16:38,875 --> 00:16:42,333
them github likes to change them a little
343
00:16:42,333 --> 00:16:45,291
bit what means that you get a different
344
00:16:45,291 --> 00:16:49,083
commit ids back and then you have
345
00:16:49,083 --> 00:16:51,166
something which is called like divergent
346
00:16:51,166 --> 00:16:54,708
divergent changes so you have a set of uh
347
00:16:54,708 --> 00:16:57,458
commits which jjc in your local
348
00:16:57,541 --> 00:17:00,875
repository and sets of of commits which
349
00:17:00,875 --> 00:17:03,083
are coming from the remote and they look
350
00:17:03,083 --> 00:17:05,416
the same and the jj doesn't know what to
351
00:17:05,416 --> 00:17:07,916
do with it so you have to manually drop
352
00:17:07,916 --> 00:17:11,916
some of them which is cumbersome uh it's
353
00:17:11,916 --> 00:17:14,416
not you know like end of the world but
354
00:17:14,416 --> 00:17:16,666
you you need to learn what the divergent
355
00:17:16,666 --> 00:17:20,250
change is and how to pick the right ones
356
00:17:20,250 --> 00:17:22,750
you want and it's just something you have
357
00:17:22,750 --> 00:17:24,791
to do which is sad
358
00:17:24,791 --> 00:17:26,500
but there are some tools
359
00:17:27,666 --> 00:17:31,458
being worked on one is that tangled um
360
00:17:31,458 --> 00:17:35,750
which is like uh like a github but based
361
00:17:35,750 --> 00:17:41,541
on ad protocol the one from blue sky but
362
00:17:41,541 --> 00:17:45,041
most mostly interesting to me is another
363
00:17:45,041 --> 00:17:47,500
tool i haven't seen it live it's not
364
00:17:47,500 --> 00:17:48,916
released there are some people you know
365
00:17:48,916 --> 00:17:52,375
who has access to it but they are free um
366
00:17:52,375 --> 00:17:54,708
right now i think two two or three
367
00:17:54,708 --> 00:17:58,166
maintainers from jj like the the core
368
00:17:58,166 --> 00:18:00,416
contributors are working for the company
369
00:18:00,416 --> 00:18:02,583
which develops the tool for jj which i
370
00:18:02,583 --> 00:18:04,208
think is going to be amazing because it's
371
00:18:04,208 --> 00:18:05,791
a you know if the
372
00:18:05,791 --> 00:18:07,291
contributor of the tool can
373
00:18:08,416 --> 00:18:11,083
the other people i imagine who knows the
374
00:18:11,083 --> 00:18:14,291
tool the the most and if they're gonna
375
00:18:14,291 --> 00:18:16,458
you know build for this as well like some
376
00:18:16,500 --> 00:18:20,041
online presence that can be amazing so we
377
00:18:20,041 --> 00:18:22,416
have to wait for that i think i think
378
00:18:22,416 --> 00:18:24,583
that's how github started right i vaguely
379
00:18:24,583 --> 00:18:27,875
remember that a bunch of like early git
380
00:18:27,875 --> 00:18:31,208
tools or tutorials or documentation was
381
00:18:31,208 --> 00:18:36,583
created by two founders of github like
382
00:18:36,583 --> 00:18:37,750
they were really involved in the git
383
00:18:37,750 --> 00:18:40,041
community and that's why github started
384
00:18:40,041 --> 00:18:43,000
so uh let's hope the
385
00:18:43,000 --> 00:18:44,541
jj hub is also gonna be
386
00:18:45,750 --> 00:18:48,708
such a step forward like github was right
387
00:18:48,708 --> 00:18:51,333
yeah because this was a huge a huge
388
00:18:51,333 --> 00:18:53,875
change for the older ecosystem yeah
389
00:18:53,875 --> 00:18:55,666
locally it's great you know you have
390
00:18:55,666 --> 00:18:59,916
everything um but yeah sorry yeah i just
391
00:18:59,916 --> 00:19:03,083
wanted to comment one thing that while
392
00:19:03,083 --> 00:19:05,041
the problems that you mentioned are real
393
00:19:05,041 --> 00:19:09,416
overall i think it's a nicer experience
394
00:19:09,416 --> 00:19:13,000
for me to work with github using jj once
395
00:19:13,000 --> 00:19:17,416
i got my flow like yes memorized then it
396
00:19:17,416 --> 00:19:20,208
was with git because whenever i'm
397
00:19:20,458 --> 00:19:23,333
checking somebody's branch with git i
398
00:19:23,333 --> 00:19:26,125
would like do the checkout and then the
399
00:19:26,125 --> 00:19:28,166
branch is like stay somewhere on my
400
00:19:29,208 --> 00:19:31,083
on my drive and then i have to like
401
00:19:31,083 --> 00:19:34,458
manually delete it and with the jj i just
402
00:19:34,458 --> 00:19:38,625
make a new changed then based off this
403
00:19:38,625 --> 00:19:42,000
remote branch and if i just run the code
404
00:19:42,000 --> 00:19:43,416
and there are no changes i just switch
405
00:19:43,416 --> 00:19:45,250
somewhere else and this empty change is
406
00:19:45,250 --> 00:19:48,041
gonna be cleaned up by itself and if not
407
00:19:48,041 --> 00:19:53,666
i do just jj abandon and it's gone so uh
408
00:19:53,666 --> 00:19:56,750
it's super smooth i don't like i don't
409
00:19:56,750 --> 00:19:59,041
feel that switching to somebody else's
410
00:19:59,041 --> 00:20:01,541
branches that are remote is gonna be a
411
00:20:01,541 --> 00:20:03,958
hustle and i remember with git i was
412
00:20:03,958 --> 00:20:07,416
always thinking is it worth to check it
413
00:20:07,416 --> 00:20:09,166
out because then i have to clean it up
414
00:20:09,166 --> 00:20:12,375
afterwards and i really did not like to
415
00:20:12,375 --> 00:20:15,000
have to remember to do that oh yeah well
416
00:20:15,000 --> 00:20:17,083
you have to git stash the current work or
417
00:20:17,083 --> 00:20:19,750
do the git commit work in progress like
418
00:20:19,750 --> 00:20:22,208
some stupid things and then you know like
419
00:20:22,208 --> 00:20:27,000
revert it yeah i would remember that i
420
00:20:27,000 --> 00:20:29,750
start some things and i want to like do
421
00:20:29,750 --> 00:20:32,375
something with it by the end of the day
422
00:20:32,375 --> 00:20:35,083
before i forget i go back there and even
423
00:20:35,083 --> 00:20:37,833
if i'm not gonna work on it just unstash
424
00:20:37,833 --> 00:20:40,500
it create a work in progress commit or
425
00:20:40,500 --> 00:20:42,875
something like this and with jj i just
426
00:20:42,875 --> 00:20:44,500
like leave the change and i know it's
427
00:20:44,500 --> 00:20:46,375
still somewhere there even if i did not
428
00:20:46,375 --> 00:20:49,666
name it i can probably dig it up and even
429
00:20:49,666 --> 00:20:51,708
better because it's a connected to the
430
00:20:51,708 --> 00:20:53,625
history because stash you can unstash
431
00:20:53,625 --> 00:20:56,291
everywhere you have to remember where to
432
00:20:56,291 --> 00:20:59,166
unstash the stuff and if you unstash with
433
00:20:59,166 --> 00:21:01,625
i don't know with pop then the stash is
434
00:21:01,625 --> 00:21:05,458
gone and then it's just cumbersome no the
435
00:21:05,458 --> 00:21:07,875
git stash unstash it's workflow doesn't
436
00:21:07,875 --> 00:21:11,833
work for me yeah so so while there are
437
00:21:11,833 --> 00:21:13,583
some issues i think like overall it's
438
00:21:13,583 --> 00:21:17,375
still like a big benefit it's easier to
439
00:21:17,375 --> 00:21:21,125
to work with github here is using jj then
440
00:21:21,125 --> 00:21:25,250
it is with using just git whether it's
441
00:21:25,250 --> 00:21:28,875
some graphical interface or command line
442
00:21:29,833 --> 00:21:32,791
i still like the new work so more like
443
00:21:33,041 --> 00:21:35,166
shouldn't stop you that you have to
444
00:21:35,166 --> 00:21:40,958
interact with other git repositories okay
445
00:21:40,958 --> 00:21:45,333
so so maybe to wrap it up i will add like
446
00:21:45,333 --> 00:21:50,625
just some some fast points which i got
447
00:21:50,625 --> 00:21:52,791
from mostly from the community because
448
00:21:52,791 --> 00:21:55,708
it's not something which i need or
449
00:21:55,708 --> 00:21:58,500
struggle with so the workspaces are not
450
00:21:58,500 --> 00:22:01,833
supported i don't care that much i don't
451
00:22:01,833 --> 00:22:04,500
even know what the workspace is yeah so
452
00:22:06,250 --> 00:22:08,000
but i have it on the list because people
453
00:22:08,000 --> 00:22:10,791
some some people are complaining um there
454
00:22:10,791 --> 00:22:14,583
is uh it may be slower on bigger repos uh
455
00:22:14,583 --> 00:22:19,000
mostly because the the cool thing is what
456
00:22:19,000 --> 00:22:21,125
i presented you in the video we talked
457
00:22:21,125 --> 00:22:26,125
before um is that jj not only records the
458
00:22:26,125 --> 00:22:27,791
you know like kind of commits but as well
459
00:22:27,791 --> 00:22:31,041
records every change to your files and if
460
00:22:31,041 --> 00:22:33,333
they have to watch the repository for
461
00:22:33,333 --> 00:22:36,708
file changes so you can do jj undo even
462
00:22:36,708 --> 00:22:39,625
you know like your typos and so on then
463
00:22:39,625 --> 00:22:44,000
you know this is kind of inserted a bit
464
00:22:44,000 --> 00:22:47,375
of resources to to enter every file so so
465
00:22:47,375 --> 00:22:49,791
maybe you have to switch this off for
466
00:22:49,791 --> 00:22:53,833
bigger repositories and some people as
467
00:22:53,833 --> 00:22:55,750
well are complaining that they give the
468
00:22:55,750 --> 00:22:59,583
rebase interactive can do a lot of work
469
00:22:59,583 --> 00:23:02,333
at once so you can you know like get a
470
00:23:02,333 --> 00:23:05,916
big set of files and then fastly move
471
00:23:05,916 --> 00:23:08,791
them around in where in jj you would have
472
00:23:08,791 --> 00:23:11,500
to manually move sets around you would
473
00:23:11,500 --> 00:23:13,500
have to i don't know do something like
474
00:23:14,708 --> 00:23:19,166
jj rebase and then this define the source
475
00:23:19,166 --> 00:23:21,375
and destinations and it's a little bit
476
00:23:21,375 --> 00:23:24,166
more manual work for now but for most of
477
00:23:24,166 --> 00:23:25,958
the things where people start to complain
478
00:23:25,958 --> 00:23:28,875
about about it there is a jj issue and
479
00:23:28,875 --> 00:23:31,125
plan to implement it on some point which
480
00:23:31,125 --> 00:23:34,958
is cool so on some point all of those
481
00:23:34,958 --> 00:23:38,000
smaller stuff will be will be addressed i
482
00:23:38,000 --> 00:23:41,250
think yeah i think it's a matter of scale
483
00:23:41,250 --> 00:23:43,416
like we're still in the beginning of the
484
00:23:43,416 --> 00:23:45,500
beginning of the journey of people
485
00:23:45,500 --> 00:23:49,166
switching from git to jj or maybe some
486
00:23:49,166 --> 00:23:50,000
other tool that's gonna
487
00:23:51,125 --> 00:23:55,541
have similar ideas but yeah i think it's
488
00:23:55,541 --> 00:24:00,416
just drawing pains that which are not
489
00:24:00,416 --> 00:24:03,708
that big yeah yeah definitely if you want
490
00:24:03,708 --> 00:24:06,333
to start today i think that you're not
491
00:24:06,333 --> 00:24:09,500
gonna feel much pain anymore yeah i think
492
00:24:09,500 --> 00:24:12,791
uh the main reason for us to make this
493
00:24:12,791 --> 00:24:16,208
video make this podcast is to be like
494
00:24:16,208 --> 00:24:19,125
fair that we don't want to tell you that
495
00:24:19,125 --> 00:24:21,625
like some something is a silver bullet
496
00:24:21,625 --> 00:24:23,500
that's gonna solve all the problems and
497
00:24:23,500 --> 00:24:27,750
it's gonna be sunshine all day afterwards
498
00:24:27,750 --> 00:24:31,166
uh it just has some issues the question
499
00:24:31,166 --> 00:24:33,416
is whether the like with anything in
500
00:24:33,416 --> 00:24:35,750
programming uh whether the trade-off is
501
00:24:35,750 --> 00:24:40,875
worth it right like it's uh um not it's
502
00:24:40,875 --> 00:24:43,083
not only about whether one tool is better
503
00:24:43,083 --> 00:24:44,541
than the other but you're always
504
00:24:44,541 --> 00:24:46,833
sacrificing something and there's also uh
505
00:24:46,833 --> 00:24:50,083
some kind of switching cost that you have
506
00:24:50,083 --> 00:24:51,875
to learn anything and like if the changes
507
00:24:51,875 --> 00:24:54,791
are too small then it might not be worth
508
00:24:54,791 --> 00:24:57,541
it uh but i think like with jj the
509
00:24:57,541 --> 00:25:01,000
drawbacks are are marginal like a pretty
510
00:25:01,000 --> 00:25:03,625
small with the kind of work that we do
511
00:25:03,625 --> 00:25:07,208
right yeah if you can still drive git and
512
00:25:07,208 --> 00:25:08,666
jj at the same time so
513
00:25:09,833 --> 00:25:14,541
so that's the painless edit can be i
514
00:25:14,541 --> 00:25:17,666
think yeah i think in the beginning i
515
00:25:17,666 --> 00:25:20,958
used to to do it that uh with some like
516
00:25:20,958 --> 00:25:22,958
more complicated rebases i would just
517
00:25:22,958 --> 00:25:25,125
like make sure that that git commits are
518
00:25:25,125 --> 00:25:27,791
there and just replace them with git and
519
00:25:27,791 --> 00:25:30,625
throw back to jj afterwards it was
520
00:25:30,625 --> 00:25:33,916
cumbersome but it worked but now i don't
521
00:25:33,916 --> 00:25:35,791
i don't remember when was the last time i
522
00:25:35,791 --> 00:25:38,000
did something like this like i would have
523
00:25:38,000 --> 00:25:41,041
to search now in google the things which
524
00:25:41,041 --> 00:25:42,833
i used to know about git how to do
525
00:25:42,833 --> 00:25:45,125
something which i already forgot because
526
00:25:45,125 --> 00:25:49,000
every day is jj for me yeah yeah i've
527
00:25:49,000 --> 00:25:52,583
been also jj only for i don't know six
528
00:25:52,583 --> 00:25:57,166
months at least probably longer so so
529
00:25:57,166 --> 00:25:59,500
yeah uh yeah you should definitely give
530
00:25:59,500 --> 00:26:03,500
it a shot uh if you're on defense uh
531
00:26:03,500 --> 00:26:06,958
don't be scared about what we talked uh
532
00:26:06,958 --> 00:26:10,000
about here and if you're in doubt you
533
00:26:10,166 --> 00:26:13,000
should re-listen to our previous episode
534
00:26:13,000 --> 00:26:16,333
where we're excited about all the things
535
00:26:16,333 --> 00:26:20,000
that are uh great about jj so or watch
536
00:26:20,000 --> 00:26:23,958
the video in our brain peaks channel yeah
537
00:26:23,958 --> 00:26:28,666
definitely okay good talk yeah that was
538
00:26:28,666 --> 00:26:32,041
hopefully sweet and short uh it wasn't
539
00:26:32,041 --> 00:26:35,166
short but hopefully it was damn it one
540
00:26:35,166 --> 00:26:37,958
day we're gonna have a short episode uh
541
00:26:37,958 --> 00:26:42,833
so yeah not to make it uh too long uh see
542
00:26:42,833 --> 00:26:45,458
you catch you in the next one right see
543
00:26:45,458 --> 00:26:54,000
you thank you for listening to the
544
00:26:54,000 --> 00:26:56,000
episode please subscribe if you haven't
545
00:26:56,000 --> 00:26:58,041
yet and if you like our show consider
546
00:26:58,041 --> 00:27:00,250
sharing it with your friends you will
547
00:27:00,250 --> 00:27:02,458
find notes to this episode on our page
548
00:27:03,000 --> 00:27:05,416
princeandbeards.com slash podcast where
549
00:27:05,416 --> 00:27:07,333
you can as well give us feedback or
550
00:27:07,333 --> 00:27:08,958
suggest a topic for the future episodes
551
00:27:08,958 --> 00:27:11,416
we would be very happy hearing back from
552
00:27:11,416 --> 00:27:12,625
you stay safe and
553
00:27:12,625 --> 00:27:15,291
curious till the next one bye