Thuật ngữ "sứ" thỉnh thoảng xuất hiện trong tài liệu Git. Nó có nghĩa là gì?
Thuật ngữ "sứ" thỉnh thoảng xuất hiện trong tài liệu Git. Nó có nghĩa là gì?
Câu trả lời:
"Sứ" là vật liệu mà từ đó nhà vệ sinh thường được làm (và đôi khi các đồ đạc khác như chậu rửa mặt). Điều này khác với "hệ thống ống nước" (đường ống và cống thực tế), nơi sứ cung cấp giao diện thân thiện hơn với hệ thống ống nước.
Git sử dụng thuật ngữ này tương tự, để tách các lệnh cấp thấp mà người dùng thường không cần sử dụng trực tiếp ("hệ thống ống nước") từ các lệnh cấp cao thân thiện hơn với người dùng ("sứ").
Quan trọng hơn, thuật ngữ "sứ" áp dụng cho các lệnh cấp cao , với đầu ra:
Đó là chìa khóa: nếu bạn script, bạn nên sử dụng nếu có thể các lệnh hệ thống ống nước , với đầu ra ổn định. Không phải lệnh sứ.
Tuy nhiên, bạn có thể sử dụng đầu ra của lệnh sứ có --porcelain
tùy chọn trong tập lệnh (xem bên dưới), như:
git status --porcelain
git push --porcelain
git blame --porcelain
Mặc dù git bao gồm lớp sứ của riêng nó , các lệnh cấp thấp của nó đủ để hỗ trợ phát triển các đồ sứ thay thế.
Giao diện (đầu vào, đầu ra, tập hợp các tùy chọn và ngữ nghĩa) cho các lệnh cấp thấp này có nghĩa là ổn định hơn nhiều so với các lệnh cấp độ Sứ, bởi vì các lệnh này chủ yếu để sử dụng theo kịch bản .
Mặt khác, giao diện cho các lệnh Sứ có thể thay đổi để cải thiện trải nghiệm người dùng cuối.
Xem " Làm thế nào để tôi lập trình xác định nếu có những thay đổi không được cam kết? " Để làm ví dụ cho việc sử dụng các lệnh ống nước thay vì sứ.
Lưu ý: Một lệnh sứ có thể có một --porcelain
tùy chọn.
Ví dụ : git status --porcelain
, chỉ định một đầu ra có nghĩa là được phân tích cú pháp .
--porcelain
Đưa ra đầu ra ở định dạng dễ phân tích cú pháp cho các tập lệnh. Điều này tương tự với đầu ra ngắn, nhưng sẽ ổn định trên các phiên bản git và bất kể cấu hình người dùng. Xem bên dưới để biết chi tiết.
Các chủ đề được đề cập ở trên chi tiết:
Đây là lỗi của tôi, ở một mức độ nào đó.
Các "ngắn tình trạng" hình thức được ý nghĩa cho nhãn cầu của con người, và được thiết kế bởi Junio.
Một số người cũng muốn có một đầu ra trạng thái có thể tạo tập lệnh, vì vậy tôi đã gõ một "--porcelain
" trên cùng định dạng để tắt các tính năng có thể định cấu hình như tên đường dẫn và tô màu tương đối, và đưa ra một lời hứa ngầm rằng chúng tôi sẽ không thay đổi thêm định dạng.
Ý tưởng là để ngăn chặn mọi người viết kịch bản xung quanh--short
, bởi vì nó không bao giờ có ý định ổn định.
Vì vậy, yeah, trong khi--porcelain
bản thân nó là ổn định và có thể viết kịch bản, có lẽ nó không thân thiện nhất với các trình phân tích cú pháp. Các "-z --porcelain
" định dạng là nhiều hơn như vậy, và tôi muốn giới thiệu nó cho bất cứ ai kịch bản xung quanh "git status"
Điều đó phản ánh nhu cầu, đối với người dùng git, sử dụng các lệnh sứ trong tập lệnh của họ!
Nhưng chỉ với đầu ra ổn định (với --porcelain
)
Theo nhận xét của william-berg , điều tương tự cũng xảy ra git push
!
--porcelain
Sản xuất đầu ra máy có thể đọc được.
Dòng trạng thái đầu ra cho mỗi ref sẽ được phân tách bằng tab và được gửi đếnstdout
thay vìstderr
.
Tên biểu tượng đầy đủ của các ref sẽ được đưa ra.
Như John Glassmyer đề xuất trong các ý kiến :
Có lẽ ý nghĩa của
--porcelain
ở đây là "sản xuất đầu ra phù hợp để tiêu thụ bởi các tập lệnh sứ" .
Và điều đó có thể được hỗ trợ bởi trường hợp --porcelain
giới thiệu "tùy chọn" đầu tiên
(trước đó git status --porcelain
, cam kết 6f15787, tháng 9 năm 2009, git 1.7.0 ,
trước đó git push --porcelain
, cam kết năm 1965ff7, tháng 6 năm 2009, git 1.6.4 ):
-p
--porcelain
Hiển thị trong một định dạng được thiết kế cho tiêu thụ máy.
Cam kết b5c698d, tháng 10 năm 2006, git 1.4.4
Tùy chọn mới làm cho định dạng đầu ra gốc của lệnh phát ra đầu ra dễ dàng hơn để xử lý bằng sứ .
git push
có một máy bất thường tương tự - có thể đọc được --porcelain
.
--porcelain
ở đây là "sản xuất đầu ra phù hợp để tiêu thụ bởi các tập lệnh sứ".
git diff-tree --word-diff=porcelain
Tiền đúc và cách sử dụng thuật ngữ "sứ" trong git thực ra là của Mike Taht, trong khi nếu không thì mất một cuộc tranh cãi gay gắt với Linus Torvalds.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
Trên thực tế, một trong những hy vọng của tôi là các SCM khác chỉ có thể sử dụng hệ thống ống nước git.
Nhưng sau đó tôi thực sự khuyên bạn nên sử dụng "git", chứ không phải "libgit
". Tức là bạn lấy tất cả hệ thống ống nước như các chương trình thực sự, và thay vì cố gắng liên kết với các thói quen cá nhân, bạn sẽ kịch bản nó.Nếu bạn không muốn nó, tôi sẽ không làm điều đó.
Vẫn có ý nghĩa để tách hệ thống ống nước từ sứ , mặc dù.
Sứ là tên dễ thương cho các chương trình và bộ chương trình tùy thuộc vào git lõi, thể hiện quyền truy cập cao vào git lõi. Các sứ thể hiện nhiều giao diện SCM hơn là "hệ thống ống nước".
Các lệnh sứ được thiết kế để tiêu thụ của con người, trái ngược với các lệnh có đầu ra dễ dàng cho máy tính phân tích cú pháp. git status
sẽ là một ví dụ.
--porcelain
tùy chọn, nó là dành cho tiêu thụ máy.
git status --porcelain
: Cung cấp đầu ra ở định dạng dễ phân tích cú pháp cho các tập lệnh. (...) Nhưng sẽ vẫn ổn định trên các phiên bản Git và bất kể cấu hình người dùng.
git status --porcelain
có định dạng ổn định có thể được phân tích cú pháp, nhưng status
bản thân lệnh được thiết kế để hướng tới người dùng (ví dụ như trái ngược với git ls-files
).
--porcelain
lựa chọn khó hiểu thì sao !?--porcelain
tùy chọn và sau đó sử dụng đầu ra cho kịch bản. Về cơ bản các tác giả của git đang ngầm hứa sẽ không thay đổi bất cứ điều gì trong đó, bất cứ lúc nào sớm. Ví dụ: Tôi có thể sử dụng git status --porcelain
và sử dụng đầu ra cho kịch bản và điều đó sẽ hoàn toàn ổn.For more detail, checkout VonC's answer.
--porcelain
trên các lệnh "sứ" để đạt được chức năng "giả ống nước" pha trộn rất độc đáo với thiết kế UI chung của Git ...;)
--plumbing
(vì bạn là thợ sửa ống nước lần này, không phải là người dùng "sứ" thông thường).
Câu trả lời của Greg Hewgill là chính xác. Lưu ý rằng có các loại sứ thay thế có sẵn cho Git, bao gồm Easy Git, yap, pyrite và vng. Mỗi mục đích là để làm cho Git dễ dàng hơn để tìm hiểu / sử dụng cho một số phần của cộng đồng. Liên kết đến tất cả các dự án này nằm trên trang Easy Git: http://people.gnome.org/~newren/eg/ .
Sứ là tên dễ thương cho các chương trình và bộ chương trình tùy thuộc vào git lõi, thể hiện quyền truy cập cao vào git lõi.
Có hai ý nghĩa riêng biệt của sứ trong git.
Hai ý nghĩa này, trong khi nó có thể được tranh luận là không mâu thuẫn hoàn toàn, có thể xuất hiện mâu thuẫn.
Sách Pro Git chính thức :
Nhưng vì Git ban đầu là một bộ công cụ cho một hệ thống kiểm soát phiên bản chứ không phải là một VCS hoàn toàn thân thiện với người dùng, nên nó có một số tiểu ban hoạt động ở mức độ thấp và được thiết kế để kết nối theo kiểu UNIX hoặc được gọi từ các tập lệnh. Các lệnh này thường được gọi là các lệnh điều chỉnh hệ thống ống nước của Git, trong khi các lệnh thân thiện hơn với người dùng được gọi là các lệnh của sứ sứ.
--porcelain
/ =porcelain
tùy chọnNhiều lệnh git đi kèm với một --porcelain
lựa chọn mà là dành cho kịch bản.
git status
' tài liệu :
--porcelain[=<version>]
Đưa ra đầu ra ở định dạng dễ phân tích cú pháp cho các tập lệnh. Điều này tương tự với đầu ra ngắn, nhưng sẽ ổn định trên các phiên bản Git và bất kể cấu hình người dùng. Xem bên dưới để biết chi tiết.
git diff
's tài liệu :
--word-diff[=<mode>]
sứ
Sử dụng một định dạng dựa trên dòng đặc biệt dành cho tiêu thụ tập lệnh.