术语“瓷器”在Git中是什么意思?

siv3szwd  于 2022-12-21  发布在  Git
关注(0)|答案(9)|浏览(118)

在Git文档中偶尔会出现“瓷器”这个词,它是什么意思?

2ul0zpep

2ul0zpep1#

“瓷器”是马桶(有时还有洗脸盆等其他固定装置)的材料,它与“管道”(实际的管道和排水管)不同,瓷器为管道提供了一个更友好的界面。
Git使用这个术语来类比,将用户通常不需要直接使用的低级命令(“plumbing”)与用户友好的高级命令(“ceramine”)分开。

wdebmtf2

wdebmtf22#

更重要的是,术语"瓷器"适用于高级命令,输出:

      • 可供人类阅读**
      • 不用于分析**
      • 易受变化/发展影响**

这是关键:如果你编写脚本,你应该尽可能的使用 * plumbing * 命令,有稳定的输出。2不要使用陶瓷命令。
但是,您可以使用在脚本中有--porcelain选项的ceramine命令的输出(见下文),例如:

git status --porcelain
git push --porcelain
git blame --porcelain

虽然git包含了自己的瓷器层,但它的底层命令足以支持替代瓷器的开发。
这些低级命令的接口(输入、输出、选项集和语义)比陶瓷级命令稳定得多,因为这些命令主要用于脚本化使用
另一方面,为了改善最终用户体验,瓷片命令的界面可能会发生变化。
请参阅"如何以编程方式确定是否存在未提交的更改?"作为使用管道命令而不是陶瓷命令的示例。
注意:陶瓷命令可以有--porcelain选项。
例如:git status --porcelain,它指定要解析的输出

--porcelain

输出的脚本格式要易于解析,这类似于short输出,但无论用户配置如何,在不同的git版本中都保持稳定,详见下文。
上面提到的线程详细信息:
在某种程度上,这是我的错。
"短状态"表格是为人类眼球设计的,由Junio设计。
有些人也想要一个脚本化的状态输出,所以我在相同的格式上添加了一个"--porcelain",它关闭了相对路径名和着色等可配置特性,并隐含地承诺我们不会对格式做进一步的更改。
这个想法是为了防止人们围绕--short编写脚本,因为它从来没有打算是稳定的。
因此,虽然--porcelain本身 * 是 * 稳定的和可脚本化的,但它对解析器可能不是最友好的,"-z --porcelain"格式更是如此,我会向任何围绕"git status"编写脚本的人推荐它
这反映了git用户在脚本中使用陶瓷命令的需求!
但仅在输出稳定时(使用--porcelain
正如william-berg所评论的,git push也是如此!

--porcelain

产生机器可读的输出。
每个参考的输出状态行将以制表符分隔,并发送到stdout而不是stderr
将给出参考文献的完整符号名称。
正如John Glassmyer在评论中提出的:
也许**--porcelain在这里的意思是"生产出适合瓷器脚本消费的产出"**。
这可以通过引入"--porcelain选项"的第一个案例来支持
(在git status --porcelain , commit 6f15787, September 2009, git 1.7.0之前,
git push --porcelain , commit 1965ff7, June 2009, git 1.6.4之前):
git blame --porcelain

-p
--porcelain

以专为机器消耗量设计的格式显示。
Commit b5c698d, October 2006, git 1.4.4

    • 新选项使命令的本机输出格式发出更易于由Porcelain处理的输出**。
xtupzzrd

xtupzzrd3#

git中“瓷器”一词的创造和使用实际上是由Mike Taht提出的,而在其他方面则与Linus Torvalds进行了激烈的争论。
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
事实上,我的一个希望是其他SCM可以使用git管道。
但是我真的建议你使用“git”本身,而不是任何“libgit“。也就是说,你把所有的管道都当作真正的程序,而不是试图链接单独的例程,你会用脚本来编写它。
如果你不想要,我就不做。

不过把水管和瓷器分开还是有意义的

n53p2ov0

n53p2ov04#

Porcelain是依赖于core git的程序和程序套件的可爱名称,代表了对core git的高级访问。Porcelain公开了更多的SCM接口,而不是“管道”。
-- Porcelain, Git Wiki

wlwcrazw

wlwcrazw5#

简单解释

  • 编写脚本时不应依赖“陶瓷”命令,因为:它们很可能会改变;是为人类而不是机器设计的。
  • “管道”命令用于脚本编写,因为:它们更稳定/不太可能改变)。

是的,但是令人困惑的--porcelain选项呢?

如果您想要:
1.使用陶瓷命令(用于人类,而不是解析)AND
1.可靠地解析它
....然后您***可以***添加--porcelain选项,并使用输出编写脚本。

**示例:**我可以使用git status --porcelain并将输出用于脚本编写,没有问题。

(我这样说是出于对git的创造者的最大尊重。批评很容易,特别是在没有指定替代方案的情况下。但对我来说,这些标志似乎令人困惑。)

瓷器/管道术语从何而来?

  • 如果英语不是你的第一语言,那么Greg Hewgill可以完美地解释它。
  • 更多详情:检查VonC's答案。
blmhpbnm

blmhpbnm6#

陶瓷命令是为人类使用而设计的,而不是输出容易被计算机解析的命令。git status就是一个例子。

ovfsdjhp

ovfsdjhp7#

在git中,瓷器有两种不同的含义。
这两个意义,虽然可以说并不完全矛盾,但也可能显得矛盾。

A.概念(管道与陶瓷)

官方Pro Git book
但是,由于Git最初是一个版本控制系统的工具箱,而不是一个完整的用户友好的VCS,它有许多子命令,这些子命令做底层的工作,被设计成UNIX风格的链接在一起或从脚本调用,这些命令通常被称为Git的“plumbing”命令,而更用户友好的命令被称为“ceramine”命令。

B. --porcelain/=porcelain选项

许多git命令都带有--porcelain选项,*****是用于编写脚本的。
git status '文档:
--porcelain[=<version>]
以脚本易于解析的格式给予输出。这类似于简短输出,但在Git版本中保持稳定,不受用户配置的影响。详细信息见下文。
git diff的文档:
--word-diff[=<mode>]
瓷器
使用专用于脚本使用的基于行的特殊格式。

nwwlzxa7

nwwlzxa78#

Greg Hewgill的回答完全正确。请注意,Git还有其他一些可供选择的特性,包括Easy Git、yap、pyrite和vng。每一个都是为了让Git更容易为社区中的某些人学习/使用。所有这些项目的链接都在Easy Git页面上:http://people.gnome.org/~newren/eg/.

kcugc4gi

kcugc4gi9#

瓷器是依赖于core git的程序和程序套件的可爱名称,代表了对core git的高级访问。
https://git.wiki.kernel.org/index.php/Porcelain

相关问题