Bỏ qua để đến nội dung

Git tích hợp

Một dự án Restorm sinh ra để sống trong một kho git. Phần tích hợp đi xa hơn một lệnh git commit đơn thuần: nó hiểu được định dạng và biết cách giải quyết xung đột ở mức thực thể nghiệp vụ, chứ không phải ở mức dòng YAML.

Không có gì phải cấu hình. Ngay khi tệp .restorm đang mở nằm trong một kho git, các bề mặt git sẽ được kích hoạt.

Restorm dùng git cục bộ của bạn: không phải nhập thông tin đăng nhập, cũng không phải quản lý token trong ứng dụng. Quy tắc rất đơn giản — nếu git push chạy được trong terminal của bạn thì nó cũng chạy được trong Restorm. Git được chạy với các lời hỏi bị tắt: một kho đòi mật khẩu sẽ thất bại ngay lập tức kèm thông báo của git, thay vì làm treo giao diện.

Hai nút, ĐẩyKéo, mỗi nút mang một chấm tròn (một dấu chấm, không bao giờ là một con số) khi có thứ gì đó cần gửi đi hoặc có một phiên bản mới hơn cần lấy về.

Menu Git trên thanh tiêu đề cung cấp cùng những hành động đó, cộng thêm Làm mới, Đặt lại về phiên bản máy chủLịch sử.

Ô GIT trên thanh trạng thái: Làm mới, Đẩy và Kéo, trong đó hai nút sau đều mang một chấm tròn, rồi tới Lịch sử. Chú giải “Đẩy lên kho lưu trữ” đang mở.

Hộp thoại push hiển thị một thông điệp commit đã soạn sẵn, được sinh ra một cách tất định từ phần diff cấu trúc — không dùng mô hình ngôn ngữ. Mỗi thực thể bị sửa đổi (yêu cầu, kịch bản, thư mục, thư mục biến) một dòng, không bao giờ mỗi trường một dòng.

  • Một bộ chọn ngôn ngữ cho thông điệp, độc lập với ngôn ngữ của giao diện, kèm một công tắc để đặt nó làm giá trị mặc định.
  • Một tiêu đề sửa được, với bộ đếm gợi ý ở mức 72 ký tự.
  • Một phần thân nhiều dòng.

Việc xác nhận sẽ lần lượt: lưu, git add, commit, push.

Restorm lưu trước, rồi mới lấy về và hợp nhất.

Hợp nhất sạch: cây và các tab đang mở được làm mới tại chỗ.

Xung đột: một khung nhìn giải quyết gồm bốn bảng mở ra.

Khung nhìn giải quyết xung đột với bốn bảng: danh sách xung đột ở bên trái, phiên bản của bạn, phiên bản của máy chủ — các URL khác nhau được viền đỏ — và bảng “Đã giải quyết” đã được điền sau khi giữ lại phiên bản của bạn.

BảngNội dung
Danh sách xung độtCác thực thể đang xung đột
Phiên bản của bạnChỉ đọc
Phiên bản của họChỉ đọc
Đã giải quyếtSửa được — đây là thứ sẽ được ghi

Điểm quan trọng: mỗi bảng hiển thị thực thể trong trình biên tập thực sự của nó — một yêu cầu HTTP trong trình biên tập HTTP, một kịch bản trong trình biên tập kịch bản. Bạn không giải quyết những dấu <<<<<<< trong YAML, mà so sánh hai yêu cầu.

Mỗi bên có một nút “dùng phiên bản này”, và những trường khác nhau đều được tô đỏ — khi chỉ một trường khác biệt, bảng sẽ mở thẳng vào tab liên quan.

Tài liệu API của một thư mục biến được giải quyết tự động (phiên bản mới hơn thắng).

Hủy sẽ chạy một lệnh git merge --abort. Nếu bạn đóng ứng dụng giữa chừng lúc đang giải quyết, ở lần khởi chạy sau Restorm sẽ đề nghị bạn từ bỏ phép hợp nhất.

Restorm định kỳ kiểm tra xem có phiên bản mới hơn không — mà không bao giờ tự hợp nhất. Có ba yếu tố kích hoạt: một thay đổi được quan sát thấy trong .git, việc mở một tệp, và một bộ hẹn giờ mà tần suất chỉnh được trong Cài đặt ▸ Git (Off, 15 phút, 30 phút, 1 giờ, 4 giờ, 12 giờ, 24 giờ).

Khi đó một thông báo “Có bản cập nhật” sẽ đề nghị Pull now.

Nếu tệp đã thay đổi trên ổ đĩa kể từ lúc được mở, việc lưu sẽ bị từ chối và Restorm hỏi bạn muốn Nạp lại hay Giữ phiên bản của bạn.

Nhờ hai đặc tính của định dạng, được mô tả trong Dự án và tệp .restorm: một thứ tự khóa chuẩn tắc, và các định danh được suy ra một cách ổn định.

Hệ quả: mở rồi lưu lại mà không sửa gì sẽ không tạo ra diff nào, và hai người thêm cùng một yêu cầu vào cùng một chỗ sẽ tạo ra những thực thể mà phép hợp nhất biết cách ghép cặp.

Git ▸ Lịch sử mở ra một khung nhìn hai ngăn: danh sách các commit kèm một rãnh nhánh, và phần chi tiết ở bên phải. Menu ngữ cảnh của một commit cho phép lấy lại phiên bản đó.

Bốn công cụ, ở bản Pro: git_commit_push (bước 1 trên 2 — trả về một token duyệt, tiêu đề, phần thân và diff theo từng thực thể, mà không ghi gì cả), git_confirm_push (bước 2 trên 2 — bị từ chối nếu dự án đã thay đổi kể từ lúc duyệt), git_pullgit_resolve_conflicts.

Việc tách làm hai bước là có chủ ý: một tác nhân không thể đẩy đi mà chưa từng trình ra một bản diff trước đó.