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 --porcelainopçã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 --porcelainopçã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--porcelainpor si só seja estável e programável, talvez não seja o mais amigável para os analisadores. O-z --porcelainformato " " é 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 emstdoutvez destderr.
Os nomes simbólicos completos dos árbitros serão fornecidos.
Como John Glassmyer propõe nos comentários :
Talvez o significado
--porcelainaqui seja "produzir saída adequada para consumo por scripts de porcelana" .
E isso poderia ser suportado pelo primeiro caso de --porcelainintroduçã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 pushtem uma leitura anômala da mesma forma --porcelain.
--porcelainaqui 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 statusseria um exemplo.
--porcelainopçã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 --porcelainpossui um formato estável que pode ser analisado, mas o statuspróprio comando foi projetado para ser voltado para o usuário (em oposição a, por exemplo git ls-files).
--porcelainopção confusa !?--porcelainopçã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 --porcelaine usar a saída para scripts e isso seria perfeitamente aceitável.For more detail, checkout VonC's answer.
--porcelainem 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/ =porcelainopçõesMuitos comandos do git vêm com uma --porcelainopçã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.