Jujutsu ( jj ), một hệ thống kiểm soát phiên bản hiện đại sử dụng Git làm backend, đang trải qua sự áp dụng ngày càng tăng trong cộng đồng các nhà phát triển, những người báo cáo về những cải thiện đáng kể trong quy trình làm việc so với việc sử dụng Git truyền thống. Hệ thống này hứa hẹn một mô hình tư duy đơn giản hóa trong khi vẫn duy trì khả năng tương thích đầy đủ với các repository Git hiện có, cho phép các nhà phát triển cá nhân áp dụng mà không cần thay đổi toàn bộ nhóm.
Tỷ lệ Giữ chân Người dùng Đặc biệt Thúc đẩy Sự phát triển Cộng đồng
Khía cạnh nổi bật nhất trong việc áp dụng Jujutsu dường như là tỷ lệ giữ chân người dùng đã thử nghiệm nghiêm túc hệ thống này. Các cuộc thảo luận trong cộng đồng cho thấy tỷ lệ chuyển đổi cao bất thường, với các nhà phát triển liên tục báo cáo rằng một khi họ dành một tuần để học hệ thống, họ hiếm khi quay lại sử dụng Git. Mô hình này đã xuất hiện trên nhiều chủ đề thảo luận, cho thấy rằng khoản đầu tư học tập ban đầu sẽ được đền đáp nhanh chóng đối với hầu hết người dùng.
Hệ thống này giải quyết một số điểm yếu mà người dùng Git thường gặp phải, đặc biệt là xung quanh các thao tác rebase phức tạp và quản lý nhiều thay đổi liên quan. Không giống như cách tiếp cận modal của Git yêu cầu người dùng điều hướng qua các trạng thái khác nhau trong các thao tác như rebasing, Jujutsu duy trì giao diện nhất quán trong suốt tất cả các thao tác.
Quy trình Làm việc Đơn giản cho các Thao tác Phức tạp
Một trong những ưu điểm chính của Jujutsu nằm ở việc xử lý các tình huống nổi tiếng khó khăn trong Git, chẳng hạn như quản lý các pull request phụ thuộc hoặc chia tách công việc trên các nhánh song song. Khi các nhà phát triển cần sửa đổi một commit trước đó trong một chuỗi các thay đổi liên quan, Git thường yêu cầu rebase thủ công tất cả các commit tiếp theo. Jujutsu tự động hóa quá trình này, tự động cập nhật các revision phụ thuộc khi các commit cha của chúng thay đổi.
Hệ thống này cũng giới thiệu một cách tiếp cận khác đối với việc staging các thay đổi. Thay vì khu vực staging dựa trên index của Git, Jujutsu coi working copy như một commit. Các nhà phát triển có thể sử dụng các lệnh như jj split
để tách các thay đổi thành các revision khác nhau hoặc jj squash
để kết hợp công việc, cung cấp tính linh hoạt tương tự như git add -p
nhưng với khả năng chỉnh sửa mạnh mẽ hơn.
Các Lệnh Chính của Jujutsu so với Git
Thao tác | Lệnh Git | Lệnh Jujutsu |
---|---|---|
Đưa thay đổi vào stage một cách tương tác | git add -p |
jj squash -i |
Tách thay đổi | git reset -p + git add -p |
jj split |
Chỉnh sửa commit trước đó | git rebase -i |
jj edit <revision> |
Tạo nhánh mới | git checkout -b <branch> |
jj new |
Hoàn tác thao tác | git reflog + git reset |
jj op undo <operation> |
Tính năng Giải quyết Xung đột và Khôi phục
Jujutsu xử lý các xung đột merge như những công dân hạng nhất thay vì chặn các thao tác. Khi xảy ra xung đột, hệ thống đánh dấu chúng và cho phép các nhà phát triển tiếp tục làm việc, giải quyết xung đột khi thuận tiện thay vì bị buộc phải giải quyết ngay lập tức. Cách tiếp cận này giảm sự gián đoạn quy trình làm việc mà người dùng Git thường trải qua trong các merge phức tạp.
Hệ thống cũng bao gồm chức năng undo toàn diện thông qua operation log của nó. Mọi hành động được thực hiện trong repository Jujutsu đều được ghi lại, cho phép các nhà phát triển hoàn nguyên toàn bộ trạng thái repository về bất kỳ điểm nào trước đó. Tính năng này cung cấp một mạng lưới an toàn mà nhiều nhà phát triển thấy giải phóng, đặc biệt khi thực hiện các sửa đổi lịch sử phức tạp.
Bạn có thể làm hỏng repo của mình trong git và thế là hết -- bạn bị mắc kẹt. Hoặc bạn tìm thấy một số phép thuật cực kỳ phức tạp trên internet để cứu bạn. Với jj bạn chỉ cần jj op undo <operation_id_that_fucked_your_repo> và bạn sẽ ổn.
Ưu điểm của Workflow so với Git
- Tự động Rebasing: Các commit phụ thuộc được cập nhật tự động khi commit cha thay đổi
- Xung đột như Công dân hạng nhất: Xung đột không chặn các thao tác và có thể được giải quyết bất cứ lúc nào
- Không có Trạng thái Modal: Giao diện nhất quán mà không có chế độ rebase/merge đặc biệt
- Hoàn tác Toàn cầu: Lịch sử thao tác hoàn chỉnh cho phép khôi phục bất kỳ trạng thái repository nào
- Working Copy như Commit: Loại bỏ độ phức tạp của staging area trong khi cung cấp nhiều sức mạnh hơn
Áp dụng Doanh nghiệp và Khả năng Tương thích
Jujutsu đã tìm thấy thành công trong môi trường doanh nghiệp, với việc triển khai tại các công ty công nghệ lớn bao gồm Google, nơi nó phục vụ như một frontend cho hệ thống monorepo dựa trên Perforce nội bộ của họ. Thiết kế backend-agnostic của hệ thống cho phép nó hoạt động với các hệ thống lưu trữ khác nhau trong khi trình bày giao diện nhất quán cho người dùng.
Lớp tương thích Git có nghĩa là các nhóm có thể áp dụng Jujutsu từ từ, với một số thành viên sử dụng nó trong khi những người khác tiếp tục với Git trên cùng các repository. Khả năng tương tác này loại bỏ rào cản thông thường của việc yêu cầu áp dụng đồng thuận toàn nhóm cho các thay đổi hệ thống kiểm soát phiên bản.
Hỗ trợ Backend của Jujutsu
- Git Backend: Backend chính để tương thích với các kho lưu trữ Git hiện có
- Native Backend: Định dạng lưu trữ riêng của Jujutsu cho các kho lưu trữ mới
- Piper Backend: Tích hợp với hệ thống dựa trên Perforce nội bộ của Google
- Backend tương lai: Được thiết kế để hỗ trợ các hệ thống kiểm soát phiên bản bổ sung
Đường cong Học tập và Hệ sinh thái Công cụ
Mặc dù Jujutsu cung cấp những ưu điểm đáng kể, nó vẫn yêu cầu học các khái niệm và lệnh mới. Hệ thống sử dụng thuật ngữ khác với Git, gọi là revision thay vì commit và bookmark thay vì branch. Tuy nhiên, phản hồi từ cộng đồng cho thấy các nhà phát triển thường trở nên hiệu quả trong vòng một ngày và hoàn toàn thoải mái trong vòng một tuần.
Hệ sinh thái công cụ xung quanh Jujutsu vẫn đang phát triển so với bối cảnh trưởng thành của Git. Trong khi các giao diện dòng lệnh như jjui
và lazyjj
cung cấp trải nghiệm tương tác, tích hợp IDE vẫn còn hạn chế. Một số nhà phát triển báo cáo điều này như một cân nhắc khi đánh giá việc áp dụng, đặc biệt trong các nhóm phụ thuộc nhiều vào quy trình làm việc Git dựa trên IDE.
Mặc dù là một hệ thống tương đối mới, Jujutsu dường như đang thu hút sự chú ý trong cộng đồng các nhà phát triển đang tìm kiếm quy trình làm việc kiểm soát phiên bản mạnh mẽ và trực quan hơn. Sự kết hợp giữa khả năng tương thích Git và các khả năng nâng cao đặt nó ở vị trí hấp dẫn cho cả các nhà phát triển cá nhân và các tổ chức muốn cải thiện quy trình phát triển của họ.
Tham khảo: Jujutsu For Busy Devs