“瓷器”一词偶尔出现在Git文档中。这是什么意思?
答案 0 :(得分:429)
“瓷器”是通常制作厕所的材料(有时还有其他固定装置,如洗脸盆)。这与“管道”(实际的管道和排水管)不同,瓷器为管道提供了更加用户友好的界面。
Git以类比的方式使用这个术语,将用户通常不需要直接使用的低级命令(“管道”)与更加用户友好的高级命令(“瓷器”)分开。 / p>
答案 1 :(得分:399)
更重要的是,术语“瓷器”适用于high-level commands,输出:
这是关键:如果你编写脚本,你应尽可能plumbing commands使用稳定的输出。不是瓷器命令。
但是,你可以使用在脚本中有--porcelain
选项的瓷器命令的输出(见下文),如:
git status --porcelain
git push --porcelain
git blame --porcelain
虽然git包含自己的瓷层,但它的低级命令足以支持替代瓷器的开发。
这些低级命令的接口(输入,输出,选项集和语义)比瓷级命令更稳定,因为这些命令主要用于编写脚本使用即可。
另一方面,Porcelain命令的界面可能会发生变化,以改善最终用户体验。
请参阅“How do I programmatically determine if there are uncommitted changes?”作为使用管道命令而不是瓷器命令的示例。
注意:瓷器命令可以有--porcelain
选项
例如:git status --porcelain
,指定要解析的输出。
--porcelain
以易于解析的格式为脚本提供输出。这类似于短输出,但在git版本中保持稳定,无论用户配置如何。有关详细信息,请参阅下文。
上面提到的主题细节:
这在一定程度上是我的错 的“短状态”形式用于人眼,由Junio设计。
有些人也想要一个可编写脚本的状态输出,所以我在相同的格式上打了一个“--porcelain
”,关闭了可配置的功能,比如相对路径名和着色,并隐含承诺我们不会进行进一步的更改格式。
这个想法是为了防止人们围绕--short
编写脚本,因为它从来没有打算保持稳定 所以是的,虽然--porcelain
本身是稳定且可编写脚本,但它可能不是最友好的解析器。 “-z --porcelain
”格式更是如此,我建议任何人围绕“git status”编写脚本
这反映了git用户在脚本中使用瓷器命令的需要!
但只有稳定的输出(--porcelain
)
commented william-berg,git push
同样如此!
--porcelain
生成机器可读输出 每个参考的输出状态行将以制表符分隔,并发送至
stdout
而不是stderr
将给出裁判的完整符号名称。
由于John Glassmyer建议in the comments:
或许这里
--porcelain
的含义是“产生适合瓷器脚本消费的输出”。
这可以得到第一个“--porcelain
选项”介绍的支持
(在git status --porcelain
, commit 6f15787, September 2009, git 1.7.0之前,
在git push --porcelain
, commit 1965ff7, June 2009, git 1.6.4之前):
-p
--porcelain
以专为机器消耗而设计的格式显示。
Commit b5c698d, October 2006, git 1.4.4
新选项使命令的本机输出格式发出更容易由Porcelain处理的输出。
答案 2 :(得分:49)
git中的“瓷器”一词的使用和使用实际上是由迈克·塔特(Mike Taht)提出的,否则会与Linus Torvalds失去激烈的争论。
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
事实上,我的一个希望是其他SCM可以使用git管道 但是我真的建议你使用“git”本身,而不是任何“
libgit
”。即你把所有管道作为真正的程序,而不是试图链接个别例程,你脚本它。如果你不想要它,我就不会这样做 尽管如此,将管道与瓷器分开仍然是有道理的。
答案 3 :(得分:19)
瓷器是程序和程序套件的可爱名称,取决于核心git,提供对核心git的高级访问。 Porcelains暴露出比“管道”更多的SCM接口。
答案 4 :(得分:6)
瓷器命令是为人类消费而设计的,而不是那些输出很容易被计算机解析的命令。 git status
就是一个例子。
答案 5 :(得分:3)
Greg Hewgill的回答是完全正确的。请注意,Git还有其他可用的瓷器,包括Easy Git,yap,pyrite和vng。每个都旨在使Git更容易学习/使用社区的某些部分。所有这些项目的链接都在Easy Git页面上:http://people.gnome.org/~newren/eg/。
答案 6 :(得分:3)
git status --porcelain
选项呢?? loading = false
选项,然后 然后 使用输出进行脚本编写。基本上,git的作者暗含承诺不会在任何时间更改其中的任何内容。示例:我可以使用export class APIService {
constructor(private http: HttpClient) { }
getRepos(): Observable<any[]>
return this.http.get<any[]>('https://api.github.com/users/githubtraining/repos')
.pipe(catchError(this.handleError));
}
getCommits(url: string): Observable<any> {
return this.http.get<any>(url)
.pipe(catchError(this.handleError));
}
handleError(error: any) {
return throwError(error);
}
}
并将输出用于脚本编写,这完全可以。 答案 7 :(得分:2)
瓷器是程序和程序套件的可爱名称,取决于核心git,提供对核心git的高级访问。
答案 8 :(得分:1)
git中的瓷器有两种不同的含义。
这两个含义虽然可以说并不严格矛盾,但可能会出现矛盾。
Pro Git book官方人员:
但是,由于Git最初只是一个版本控制系统的工具包,而不是一个完全用户友好的VCS,因此它具有许多子级命令,这些子命令执行低级工作,并设计为以UNIX样式链接在一起或从脚本中调用。这些命令通常称为Git的“管道”命令,而更人性化的命令称为“瓷器”命令。
--porcelain
/ =porcelain
选项许多git命令都带有--porcelain
选项,该选项 用于编写脚本。
git status
'documentation:
--porcelain[=<version>]
以易于解析的格式为脚本提供输出。这类似于简短的输出,但是无论用户配置如何,在Git版本之间都将保持稳定。有关详情,请参见下文。
git diff
的{{3}}:
--word-diff[=<mode>]
瓷器
使用特殊的基于行的格式供脚本使用。