TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

I'm daily driving Jujutsu, and maybe you should too

84 pointsby surprisetalk6 months ago

12 comments

do_not_redeem5 months ago
The one thing keeping me from switching fulltime is the friction of keeping unstaged changes in the repo. It&#x27;s pretty common for me to have some throwaway lines like DEBUG = true or setLogLevel(LogLevel.VERBOSE) that are &quot;permanent&quot; in my dev environment but I never want to commit.<p>With git I can just `git add --patch` and skip over these at commit time (which I like, since I review my own code as I&#x27;m staging it), but jj doesn&#x27;t have the index and pushes you to commit all changes by default. I know there are workarounds like `jj split` but it ended up being more work than git, where I can just not add those changes in the first place.
评论 #42399048 未加载
评论 #42399437 未加载
评论 #42399148 未加载
评论 #42419943 未加载
评论 #42399404 未加载
评论 #42400476 未加载
epage5 months ago
&gt; I would have contributed patches to address these shortcomings if it were not for my third criticism, which addresses the elephant in the room: Jujutsu is a Google employee’s “20% project”, and thus all contributors are required to sign the Google CLA to participate. I refuse to sign any such thing and so should you. I have raised the issue on GitHub but it hasn’t attracted any sort of official response.<p>Unsure why he hasn&#x27;t gotten a response but last I heard on this is they are focusing on defining their google-independent governance before which will give them room to address CLA&#x27;s.
pabs35 months ago
The post got deleted, but it got saved to IA:<p><a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20241212125937&#x2F;https:&#x2F;&#x2F;drewdevault.com&#x2F;2024&#x2F;12&#x2F;10&#x2F;2024-12-10-Daily-driving-jujutsu.html" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20241212125937&#x2F;https:&#x2F;&#x2F;drewdevau...</a>
deltaburnt5 months ago
The biggest feature gap I noticed was the lack of hooks. Using Gerrit requires a commit hook to insert the change ID. jj&#x27;s docs mention this specific use case, but their workaround (using a custom commit msg editor command that wraps vim) feels hacky.<p>Didn&#x27;t bother looking further into it, not sure if this is a technical or ideological choice. Otherwise it reminded me about all the best parts of mercurial and git branchless. Pretty excited to get Fig-esque features in my external projects.
评论 #42399450 未加载
k__5 months ago
Going from changing the code and then describing it to describing your planned change and then implementing it is a good idea.<p>Now, I just need some GUI indicator or CLI prompt to ensure I don&#x27;t lose track and I&#x27;m good to go!
评论 #42399189 未加载
simonmic5 months ago
PSA for those interested in trying jujutsu, but not ready to have it auto-track all files in working copy: you can disable that in ~&#x2F;.jjconfig.toml:<p><pre><code> [snapshot] auto-track = &quot;none()&quot;</code></pre>
null_investor5 months ago
I don&#x27;t like it, I was expecting something new that replaces Git with a new idea about versioning.<p>I can already work extremely fast in Git by using bash aliases and my workflow.<p>This might be useful for those starting out.
评论 #42398920 未加载
评论 #42398820 未加载
评论 #42399425 未加载
xyzsparetimexyz5 months ago
I&#x27;m happy enough with git most of the time. But the porcelain still sucks for a few things that feel like the should be basic and it doesn&#x27;t feel like it&#x27;s getting better or that any new tools have been written that fix the gaps for me.<p>One problem I&#x27;ve had recently is that I&#x27;ve wanted to store a large JSON file on GitHub (that&#x27;s, importantly, modified slightly each commit), but with indentation it&#x27;s over 100mb so GitHub doesn&#x27;t allow it. I can strip out the indentation and that takes it down to 60mb or so, but the large objects are still in git history so they get rejected, so evidently I need to rewrite the git history.<p>Unfortunately, if you just take an old commit, strip the indentation from the JSON and try to rebase all the other commits on top of that, it&#x27;ll fail as git treats each commit as a patch and the patches to the unindented JSON don&#x27;t make sense. What I really want is to for git to treat each commit as a repository state, so that removing indentation from the state at commit A means that the patch for commit B adds all the indentation, and then I can just write a loop that rewrites each commit state. This seems like something that there should be better tooling for, I mean `git filter-branch` exists but I don&#x27;t think it works for this usecase.<p>Edit:<p>Here’s what chatgpt suggests (for rust code):<p>```python<p><pre><code> import os import subprocess def reformat_file(repo, commit, file_name): # Check if the file exists in this commit if os.path.isfile(file_name): # Run cargo fmt to format the file subprocess.run([&quot;cargo&quot;, &quot;fmt&quot;], check=True) # Stage the changes subprocess.run([&quot;git&quot;, &quot;add&quot;, file_name], check=True) def main(repo): file_to_fix = &quot;path&#x2F;to&#x2F;your&#x2F;file.rs&quot; repo.filter_commit(reformat_file, file_to_fix)</code></pre> ```<p>And running with `git filter-repo --path path&#x2F;to&#x2F;your&#x2F;file.rs --replace-callback reformat.py`. Ridiculous complicated.
评论 #42403561 未加载
评论 #42400346 未加载
porridgeraisin5 months ago
I use the &quot;stackless&quot; stacked PR git workflow mentioned in the article. I also add a bit of niceness to it so I don&#x27;t have to remember the commit IDs:<p>So git has a notes feature, this is a simple note attached to a commit. It&#x27;s intended for adding extra context to commit messages without changing the commit hash. Then there is a gitconfig for having these notes _follow_ the commit through rewrites such as rebases, squashes, amends, etc,.<p>All this together means that you write the branch name that you want in the note, use the git notes commands to two-way map this to the commit. Wrap this all in a git alias and it&#x27;s golden.
not_your_vase6 months ago
Why is there no git-light VCS, with only the top 5-8 commands available? Push, fetch, commit, merge, rebase, branch, init... maybe I forget 1 or 2. I have to think extremely hard what command I used intentionally in the past 10 years (sometimes I used some arcane commands, only to fix some problems that was caused by some other arcane commands)
评论 #42398739 未加载
评论 #42399076 未加载
评论 #42380644 未加载
评论 #42399070 未加载
SuperSandro20005 months ago
Branch names that are not just a keyboard smash maybe?
DaSHacka5 months ago
Obligatory: <a href="https:&#x2F;&#x2F;dmpwn.info&#x2F;" rel="nofollow">https:&#x2F;&#x2F;dmpwn.info&#x2F;</a>