“瓷器”这个词是什么意思?在Git中是什么意思?

术语“瓷器”偶尔出现在Git文档中。这是什么意思?

112592 次浏览

瓷是程序和程序套件的可爱名字,依赖于核心git,提供了对核心git的高级访问。瓷器比“管道”暴露出更多的SCM界面。

——# EYZ0

瓷是程序和程序套件的可爱名字,依赖于核心git,提供了对核心git的高级访问。

https://git.wiki.kernel.org/index.php/Porcelain

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

“瓷器”通常是制造厕所的材料(有时也是其他固定装置,如脸盆)。这与“管道”(实际的管道和排水管)不同,陶瓷为管道提供了更友好的界面。

Git使用这个术语进行类比,将用户通常不需要直接使用的低级命令(“管道”)与更友好的高级命令(“瓷器”)分开。

更重要的是,“瓷器”这个词;适用于高层的命令,输出:

  • 意味着人类可以读懂
  • 不是用来解析的
  • 易受变化/演变的影响

这是关键:如果编写脚本,应该尽可能使用< em >管道< / em >命令,输出稳定。而不是瓷器般的命令。

然而,你可以使用瓷器命令的输出,它在脚本中有一个--porcelain选项(见下文),像:

git status --porcelain
git push --porcelain
git blame --porcelain
尽管git包含了它自己的瓷层,但它的低级命令足以支持替代瓷器的开发。
接口(输入,输出,选项集和语义)到这些低级命令意味着更加稳定比瓷级别的命令,因为这些命令主要用于编写脚本
另一方面,为了改善最终用户的体验,瓷器命令的界面可能会发生变化

看到“# EYZ0"作为一个使用管道命令而不是瓷器命令的例子。


注意:porcelain命令可以有--porcelain选项。
例如:git status --porcelain,它指定了要解析的输出.

--porcelain

为脚本提供易于解析的输出格式。这类似于短的输出,但是无论用户配置如何,在git版本之间都保持稳定。详情见下文。

以上提到的线程细节:

在某种程度上,这是我的错。
“short-status"是为人类眼球设计的,由Junio设计。
有些人也想要一个可脚本的状态输出,所以我敲了一个"--porcelain"在相同的格式上,它关闭了可配置的功能,如相对路径名和着色,并做出了一个隐含的承诺,即我们不会对格式进行进一步的更改。
这个想法是为了防止人们围绕--short编写脚本,因为它从来都不是稳定的。
所以,虽然--porcelain本身是稳定的、可编写脚本的,但它对解析器可能不是最友好的。“# EYZ1"format更是如此,我推荐给任何围绕“git status"

”编写脚本的人
这反映了git用户在他们的脚本中使用瓷器命令的需求!
但只有稳定的输出(使用--porcelain)


评论william-berggit push也一样!

--porcelain

产生机器可读的输出。
每个ref的输出状态行将以制表符分隔,并发送到stdout而不是stderr
将给出ref的完整符号名称。


正如约翰Glassmyer提出的在评论中:

也许# EYZ1。

这可以由& --porcelain option"的第一个case来支持;介绍
(git status --porcelain,提交6f15787, 2009年9月,git 1.7.0之前,
在# EYZ1): < / p >

# EYZ1:

-p
--porcelain

以适合机器使用的格式显示。

Commit b5c698d, October 2006, git 1.4.4

# EYZ0。

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

在git中,“瓷器”一词的创造和使用实际上是由Mike Taht发明的,除此之外,他还输掉了与Linus Torvalds的激烈争论。

http://www.gelato.unsw.edu.au/archives/git/0504/0881.html

事实上,我的一个希望是其他SCM可以使用git管道 但是我真的建议你使用“git”本身,而不是任何“libgit”。例如,你把所有管道作为真正的程序,而不是试图链接到单独的例程,你会脚本
如果你不想要,我就不做了 尽管如此,将管道与瓷器分开还是有意义的。

简单的解释

  • “# EYZ0"在编写脚本时依赖命令不应该:(因为它们可能会改变;它们是为人类设计的,而不是机器)。
  • “# EYZ0"命令应该用于脚本,(因为它们更稳定/不太可能改变)。

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

如果你想:

  1. 使用瓷器命令(用于人类,而不是解析)和
  2. 可靠地解析它

....然后您<强> < / >强能添加--porcelain选项,并使用输出脚本。

我可以使用git status --porcelain,并使用输出脚本,没有问题。

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

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

  • 如果英语不是你的第一语言,那么格雷格Hewgill可以完美地解释这一点。
  • 更多详细信息:checkout VonC的 answer。

在git中,瓷器有两种不同的含义。

这两种意义,虽然可以说不是严格意义上的矛盾,但也可能是矛盾的。

A.概念性(管道vs瓷器)

官方Pro Git书籍:

但是因为Git最初是一个版本控制系统的工具包,而不是一个完全用户友好的VCS,所以它有许多执行低级工作的子命令,并且被设计成以unix风格链接在一起或从脚本调用。这些命令通常被称为Git的“管道”命令,而更友好的命令被称为“瓷器”命令。

B. --porcelain / =porcelain选项

许多git命令都带有--porcelain选项,而用于脚本编写。

# EYZ0 ' # EYZ1:

# EYZ0

为脚本提供易于解析的输出格式。这类似于短的输出,但是无论用户配置如何,在Git版本之间都保持稳定。详情见下文。

# # EYZ1 EYZ0:

# EYZ0

     使用用于脚本使用的特殊基于行的格式。