Đọc và chỉnh sửa tệp cục bộ đã lưu theo SHA-256
Kiểm tra một dự án, liệt kê và đọc các tệp đã lưu, và chỉ thay thế nội dung của chúng khi SHA-256 mong đợi vẫn khớp.
Dùng Altifigence CLI 0.1.9 trên Linux để làm việc với các tệp đã lưu của một dự án cục bộ mà không cần mở IDE. Mỗi lần thay thế nêu SHA-256 của nội dung bạn đã đọc, và lệnh từ chối nếu tệp đã lưu không còn SHA-256 đó.
Kiểm tra dự án
Dùng đường dẫn tuyệt đối tới dự án cục bộ. Ví dụ này dùng $HOME/alti-projects/demo-project. Chạy các lệnh bằng tài khoản người dùng thông thường.
set -euo pipefail
PROJECT="$(cd "$HOME/alti-projects/demo-project" && pwd -P)"
WORK="$(mktemp -d)"
alti ide workspace health --project "$PROJECT" > "$WORK/health.json"
jq '{ok, git}' "$WORK/health.json"health trước tiên hoàn tất mọi giao dịch tệp đang chờ, rồi báo cáo về dự án. Xác nhận trạng thái thoát là 0 và ok bằng true. name là tên thư mục dự án và git cho biết dự án có thư mục .git hay không.
Liệt kê và đọc tệp
alti ide workspace files --project "$PROJECT" --limit 100 > "$WORK/files.json"
jq '{total, truncated, first: .files[:5]}' "$WORK/files.json"files liệt kê các tệp đã lưu dưới dạng đường dẫn được sắp xếp, tương đối so với dự án. total đếm mọi tệp đã liệt kê và truncated là true khi total vượt quá --limit. Giới hạn mặc định là 500 và tối đa là 20000. Các thư mục như .git, .alti, .altifigence, node_modules, target và dist bị bỏ qua.
Đọc một tệp văn bản UTF-8 đã lưu. Các ví dụ này dùng notes/review.txt:
alti ide workspace read --project "$PROJECT" notes/review.txt > "$WORK/review.json"
jq '{path, encoding, sha256}' "$WORK/review.json"Kết quả có path, encoding (utf-8), sha256 và content. sha256 là SHA-256 dạng thập lục phân viết thường của nội dung đã lưu. Có thể đọc các tệp có kích thước tối đa 4194304 byte.
Thay thế một tệp
Ghi nội dung mới vào một tệp, rồi truyền sha256 bạn đã đọc làm --expected-sha256:
printf 'Third review\n' > "$WORK/review.txt"
alti ide workspace write --project "$PROJECT" notes/review.txt \
--expected-sha256 "$(jq -r .sha256 "$WORK/review.json")" \
--content "$WORK/review.txt" > "$WORK/write.receipt.json"
jq '{outcome}' "$WORK/write.receipt.json"Xác nhận trạng thái thoát là 0 và outcome bằng committed:
{
"outcome": "committed"
}Biên nhận cũng có transactionId, generation, recoveryStatus và files, trong đó mỗi mục có path, beforeSha256 và afterSha256. write thay thế một tệp hiện có. --content - đọc nội dung mới từ đầu vào chuẩn. Giữ nội dung trong giới hạn 4194304 byte.
Chỉnh sửa nhiều tệp cùng lúc
Đọc từng tệp, rồi chuẩn bị một mảng JSON với mỗi tệp một mục gồm path, expected_sha256 và content:
alti ide workspace read --project "$PROJECT" notes/review.txt > "$WORK/review.json"
alti ide workspace read --project "$PROJECT" notes/todo.txt > "$WORK/todo.json"
jq -s '[
{path: .[0].path, expected_sha256: .[0].sha256, content: "Fourth review\n"},
{path: .[1].path, expected_sha256: .[1].sha256, content: "Check the review\n"}
]' "$WORK/review.json" "$WORK/todo.json" > "$WORK/edit.json"
alti ide workspace edit --project "$PROJECT" --request "$WORK/edit.json" \
> "$WORK/edit.receipt.json"
jq '{outcome, files: [.files[].path]}' "$WORK/edit.receipt.json"Sau khi trạng thái thoát là 0, các trường được chọn trong biên nhận là:
{
"outcome": "committed",
"files": [
"notes/review.txt",
"notes/todo.txt"
]
}edit kiểm tra mọi mục trước khi thay đổi bất kỳ tệp nào, và áp dụng các thay thế như một giao dịch. Dùng từ 1 đến 64 mục, mỗi đường dẫn một mục, mỗi mục có nội dung mới. Giữ mỗi tệp trong giới hạn 4194304 byte và nội dung gốc cùng nội dung mới của tất cả các mục trong giới hạn 16777216 byte.
Xử lý khi chỉnh sửa bị từ chối
Khi engine workspace từ chối một yêu cầu write hoặc edit, lệnh thoát với trạng thái 1 và ghi một đối tượng altifigence.ide-workspace-error.v1 có message ra lỗi chuẩn. CLI báo đầu vào quá lớn hoặc yêu cầu chỉnh sửa có JSON không phải là mảng trên lỗi chuẩn với tiền tố error: và thoát với trạng thái 1. Với mỗi thông báo dưới đây, không có tệp nào bị thay đổi.
Với workspace edit original digest mismatch: notes/review.txt, tệp đã thay đổi sau khi bạn đọc. Hãy đọc lại, xem xét content hiện tại của nó và lặp lại thao tác thay thế với sha256 mới.
Với workspace edit has no content change: notes/review.txt, nội dung mới bằng nội dung đã lưu. Hãy xóa mục đó hoặc đổi nội dung của nó.
Với workspace edit transaction contains a duplicate path, hãy gộp các mục của đường dẫn đó thành một mục với nội dung cuối cùng.
Với workspace edit SHA-256 digest must be 64 lowercase hexadecimal characters, hãy sao chép giá trị sha256 từ read nguyên vẹn.
Với workspace path is outside the editable file surface, hãy dùng đường dẫn tương đối so với dự án lấy từ danh sách files, không có đoạn . hoặc ...
Với workspace exceeds 20000 files; narrow the project từ files, hãy mở một thư mục dự án nhỏ hơn.