Rift: Giải pháp thay thế Git Worktrees hiệu quả hơn với Copy-on-Write
Rift là công cụ dòng lệnh mới giúp quản lý không gian làm việc mã nguồn nhanh chóng và tiết kiệm dung lượng hơn so với Git Worktrees. Hỗ trợ macOS và Linux, công cụ này sử dụng tính năng Copy-on-Write để tạo snapshot tức thì và cung cấp API cho Node.js hoặc Bun.

Rift là một công cụ dòng lệnh (CLI) và thư viện mới được thiết kế để quản lý các không gian làm việc (workspaces) mã nguồn một cách tối ưu. Nó hoạt động như một giải pháp thay thế hoặc nâng cấp cho Git Worktrees, tập trung vào tốc độ xử lý và hiệu quả lưu trữ nhờ tận dụng tính năng Copy-on-Write của hệ thống tệp.
Các tính năng nổi bật
Rift hướng đến việc giải quyết các vấn đề về tốc độ và dung lượng khi phát triển phần mềm:
- Copy-on-Write (Sao chép khi ghi): Giúp tiết kiệm đáng kể dung lượng đĩa cứng bằng cách chỉ lưu trữ sự thay đổi của dữ liệu thay vì sao chép toàn bộ.
- Tốc độ cực nhanh: Có thể tạo không gian làm việc mới trong vòng dưới 0,1 giây, ngay cả với các thư mục có dung lượng lên tới 10GB.
- Hỗ trợ đa nền tảng: Hiện tại công cụ đang hỗ trợ macOS và Linux (với hệ thống tệp btrfs).
- Tích hợp API: Có thể sử dụng như một thư viện FFI (Foreign Function Interface) với Bun hoặc Node.js.
Cách thức hoạt động trên từng nền tảng
Rift tận dụng các tính năng hệ thống tệp tiên tiến của từng hệ điều hành để đạt hiệu suất cao nhất:
- Linux x64: Sử dụng btrfs writable snapshots. Lệnh
rift initsẽ chuyển đổi một thư mục thường thành btrfs subvolume. - macOS (arm64/x64): Sử dụng APFS clonefile. Lệnh
rift initsẽ đăng ký thư mục nguồn. - Windows x64: Gói phần mềm đã được xuất bản nhưng tính năng tạo không gian làm việc chưa được triển khai ở thời điểm hiện tại.
Hướng dẫn sử dụng cơ bản
Để cài đặt Rift, người dùng có thể sử dụng npm hoặc bun:
npm install -g rift-snapshot
# hoặc
bun add -g rift-snapshot
Các lệnh chính trong CLI bao gồm:
- Khởi tạo:
rift initđể thiết lập thư mục gốc. Lệnh này sẽ tự động chọn thư mục Rift hiện có hoặc thư mục gốc của Git gần nhất. - Tạo workspace:
rift createđể sao chép không gian làm việc hiện tại. Trên Linux, nó tạo một btrfs snapshot có thể ghi; trên macOS, nó sử dụng APFS clonefile. Nếu workspace là một kho chứa Git, workspace mới sẽ có detached HEAD và giữ nguyên trạng thái index. - Quản lý:
rift listđể liệt kê các workspace con đang hoạt động,rift ancestorsđể xem các workspace cha, vàrift removeđể xóa workspace.
JavaScript API
Rift không chỉ là công cụ dòng lệnh mà còn cung cấp API mạnh mẽ cho các nhà phát triển JavaScript thông qua FFI.
Ví dụ sử dụng:
import { create, list, remove, gc } from 'rift-snapshot';
const workspace = create({ from: process.cwd(), name: 'schema-work' });
console.log(list({ of: process.cwd() }));
remove({ at: workspace });
gc();
Đối với Node.js, việc này yêu cầu phiên bản 26.1 trở lên và cần bật cờ thử nghiệm --experimental-ffi.
Kết luận
Với khả năng tạo snapshot gần như tức thì và tối ưu hóa dung lượng lưu trữ, Rift là một công cụ hữu ích cho các lập trình viên thường xuyên phải làm việc trên nhiều nhánh (branch) hoặc ngữ cảnh mã nguồn khác nhau cùng một lúc, đặc biệt là những người phát triển trên môi trường Linux và macOS.



