← Retour au blog
tech 7 July 2026

The (Petty) Reason We Didn't Choose jj

A technical detail involving .gitattributes prevented Gradle from adopting Jujutsu as a version control system. Here's why it matters.

Article inspired by the original source
The (Petty) Reason We Didn't End Up Using jj ↗ blog.gradle.org

Introduction

In the dynamic world of version control systems, Jujutsu (jj) has started making waves. With its Git compatibility, jj promises simplified commit manipulation and safer history rewriting. However, at Gradle, a tiny detail has stalled its adoption. Spoiler: it involves line endings on Windows.

The Blocker: gradlew.bat and .gitattributes

To understand our choice, let's dive into the guts of a typical Gradle repository. Most include the Gradle Wrapper, which is crucial for running Gradle consistently. Among these files, gradlew.bat is essential for Windows environments.

On Windows, handling line endings is crucial. gradlew.bat must be checked out with CRLF line endings to function correctly. This is where the .gitattributes file comes in. It dictates to Git how to handle these specific files:

``plaintext *.bat text eol=crlf ``

However, jj does not read .gitattributes. Therefore, it cannot apply this essential per-file rule. The result: issues arise as soon as you run it on Windows, which is a non-starter for us.

Why Stick with git worktree

Despite its advantages, jj has not yet reached the maturity needed in terms of compatibility with tools like .gitattributes. For now, git worktree remains our tool of choice. It offers us the flexibility to work on multiple branches simultaneously while respecting file-specific configurations.

Alternatives: What Works?

Git worktree allows us to efficiently manage multiple branches without sacrificing compatibility with our existing configurations. While jj offers an innovative approach, for complex, multi-OS projects, compatibility remains a decisive factor.

The Future of jj at Gradle

We haven't completely closed the door on jj. The tool has potential, and we are closely following its development, notably the resolution of issue jj-vcs/jj#53. Once this problem is resolved, we might consider reevaluating it.

Conclusion

Technology evolves rapidly, and even a seemingly minor detail can influence critical decisions in a software ecosystem. At Gradle, we remain open to innovation while ensuring every change is backed by tangible improvements. Let's discuss your project in 15 minutes.

Jujutsu Gradle gitattributes version control git worktree
Deepthix newsletter · 100% AI · every Monday 8am

An AI agent reads tech for you.

Our AI agent scans ~200 sources per week and ships the best articles to your inbox Monday 8am. Free. One click to unsubscribe.

Visit the newsletter page →

Want to automate your operations?

Let's talk about your project in 15 minutes.

Book a call