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.