O termo "porcelana" aparece ocasionalmente na documentação do Git. O que isso significa?
O termo "porcelana" aparece ocasionalmente na documentação do Git. O que isso significa?
Respostas:
"Porcelana" é o material do qual os banheiros são geralmente feitos (e às vezes outros acessórios, como lavatórios). Isso é diferente do "encanamento" (os tubos e esgotos reais), onde a porcelana fornece uma interface mais amigável ao encanamento.
O Git usa essa terminologia por analogia, para separar os comandos de baixo nível que os usuários geralmente não precisam usar diretamente (o "encanamento") dos comandos de alto nível mais fáceis de usar (a "porcelana").
Mais importante, o termo "porcelana" se aplica a comandos de alto nível , com saída:
Essa é a chave: se você script, deve usar, se possível , comandos de encanamento , com saídas estáveis. Não comandos de porcelana.
No entanto, você pode usar a saída de um comando porcelain que possui uma --porcelain
opção no script (veja abaixo), como:
git status --porcelain
git push --porcelain
git blame --porcelain
Embora o git inclua sua própria camada de porcelana , seus comandos de baixo nível são suficientes para apoiar o desenvolvimento de porcelanas alternativas.
A interface (entrada, saída, conjunto de opções e semântica) para esses comandos de baixo nível deve ser muito mais estável que os comandos de porcelana, porque esses comandos são principalmente para uso com script .
A interface para os comandos de Porcelana, por outro lado, está sujeita a alterações para melhorar a experiência do usuário final.
Consulte " Como determino programaticamente se há alterações não confirmadas? " Como um exemplo para usar comandos de encanamento em vez de de porcelana.
Nota: Um comando de porcelana pode ter uma --porcelain
opção.
Por exemplo git status --porcelain
:, que designa uma saída que deve ser analisada .
--porcelain
Forneça a saída em um formato fácil de analisar para scripts. Isso é semelhante à saída curta, mas permanecerá estável nas versões git e independentemente da configuração do usuário. Veja abaixo os detalhes.
O tópico mencionado acima detalha:
Isso é culpa minha, até certo ponto.
A forma "status curto" é destinada aos globos oculares humanos e foi projetada por Junio.
Algumas pessoas também queriam uma saída de status programável, então eu coloquei um "--porcelain
" no mesmo formato que desativa recursos configuráveis, como nomes de caminho e cores relativos, e faz uma promessa implícita de que não faremos mais alterações no formato.
A idéia era impedir as pessoas de criar scripts--short
, porque nunca se pretendia que fosse estável.
Então, sim, embora--porcelain
por si só seja estável e programável, talvez não seja o mais amigável para os analisadores. O-z --porcelain
formato " " é muito mais, e eu o recomendaria a qualquer pessoa que escreva "git status"
Isso reflete a necessidade, para usuários do git, de usar comandos de porcelana em seus scripts!
Mas apenas com saída estável (com --porcelain
)
Como comentado por william-berg , o mesmo vale para git push
!
--porcelain
Produza saída legível por máquina.
A linha de status de saída para cada ref será separada por tabulação e enviada para emstdout
vez destderr
.
Os nomes simbólicos completos dos árbitros serão fornecidos.
Como John Glassmyer propõe nos comentários :
Talvez o significado
--porcelain
aqui seja "produzir saída adequada para consumo por scripts de porcelana" .
E isso poderia ser suportado pelo primeiro caso de --porcelain
introdução da " opção"
(antes git status --porcelain
, commit 6f15787, setembro de 2009, git 1.7.0 ,
antes git push --porcelain
, commit 1965ff7, junho de 2009, git 1.6.4 ):
-p
--porcelain
Mostrar em um formato projetado para o consumo da máquina.
Confirmar b5c698d, outubro de 2006, git 1.4.4
A nova opção faz com que o formato de saída nativo do comando emita uma saída mais fácil de manusear pela Porcelain .
git push
tem uma leitura anômala da mesma forma --porcelain
.
--porcelain
aqui seja "produzir saída adequada para consumo por scripts de porcelana".
git diff-tree --word-diff=porcelain
A cunhagem e o uso do termo "porcelana" no git foram na verdade por Mike Taht, enquanto perdiam uma discussão acalorada com Linus Torvalds.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
De fato, uma das minhas esperanças era que outros SCMs pudessem usar o encanamento git.
Mas então eu realmente sugiro que você use "git" em si, não nenhum "libgit
". Ou seja, você toma todo o encanamento como programas reais e, em vez de tentar vincular-se a rotinas individuais, você o rotula .Se você não quiser, eu não farei.
Ainda faz sentido separar o encanamento da porcelana .
Porcelana é um nome bonito para programas e suítes de programas, dependendo do core git, apresentando um acesso de alto nível ao core git. As porcelanas expõem mais uma interface SCM do que o "encanamento".
Os comandos de porcelana são projetados para consumo humano, em oposição aos comandos cuja saída é fácil para os computadores analisarem. git status
seria um exemplo.
--porcelain
opção, é para consumo da máquina.
git status --porcelain
: Forneça a saída em um formato fácil de analisar para scripts. (...) mas permanecerá estável nas versões do Git e independentemente da configuração do usuário.
git status --porcelain
possui um formato estável que pode ser analisado, mas o status
próprio comando foi projetado para ser voltado para o usuário (em oposição a, por exemplo git ls-files
).
--porcelain
opção confusa !?--porcelain
opção e, em seguida, use a saída para scripts. Basicamente, os autores do git prometem implicitamente não mudar nada lá, tão cedo. exemplo: posso usar git status --porcelain
e usar a saída para scripts e isso seria perfeitamente aceitável.For more detail, checkout VonC's answer.
--porcelain
em comandos "porcelain" para obter a funcionalidade "pseudo-encanamento" combina muito bem com o design geral da interface do usuário do Git ...;)
--plumbing
(já que você é um encanador dessa vez, não um usuário comum de "porcelana").
A resposta de Greg Hewgill está exatamente correta. Observe que existem porcelanas alternativas disponíveis para o Git, incluindo Easy Git, yap, pyrite e vng. Cada um deles visa tornar o Git mais fácil de aprender / usar para alguma parte da comunidade. Os links para todos esses projetos estão na página Easy Git: http://people.gnome.org/~newren/eg/ .
Porcelana é um nome bonito para programas e suítes de programas, dependendo do core git, apresentando um acesso de alto nível ao core git.
Existem dois significados distintos de porcelana no git.
Esses dois significados, embora possam ser argumentados não são estritamente contraditórios, podem parecer contraditórios.
Mas como o Git era inicialmente um kit de ferramentas para um sistema de controle de versão, em vez de um VCS fácil de usar, ele possui vários subcomandos que executam trabalhos de baixo nível e foram projetados para serem encadeados no estilo UNIX ou chamados de scripts. Esses comandos são geralmente referidos como comandos de "encanamento" do Git, enquanto os comandos mais amigáveis são chamados de comandos de "porcelana".
--porcelain
/ =porcelain
opçõesMuitos comandos do git vêm com uma --porcelain
opção que é significou para scripting.
git status
' documentação :
--porcelain[=<version>]
Forneça a saída em um formato fácil de analisar para scripts. Isso é semelhante à saída curta, mas permanecerá estável nas versões do Git e independentemente da configuração do usuário. Veja abaixo os detalhes.
git diff
's documentação :
--word-diff[=<mode>]
porcelana
Use um formato especial baseado em linha destinado ao consumo de script.