Devo analisar o status do git ou usar o gitsharp?
-
22-09-2019 - |
Pergunta
Gostaria de integrar o git ao pipeline de produção para preparar arquivos 3dsmax.Embora seja bom trabalhar com o git através do TortoiseGit, gostaria de me comunicar com ele a partir do Maxscript para adicionar comandos de menu personalizados ao 3dsmax.
Devo analisar git status
texto de saída para determinar o status da pasta ou devo usar alguma ferramenta de empacotamento para me comunicar corretamente com o git?
Eu estava pensando sobre gitsharp
já que é fácil chamar objetos dotNet do Maxscript, mas não usei programas dotNet externos.
Solução
Minha própria tentativa de resolver isso resultou na análise do status do Git. Parece mais limpo e mais fácil de implementar. Por outro lado, estou procurando o Forword para criar um arquivo XML criado especial para obter as informações necessárias de uma maneira mais "limpa".
Outras dicas
Desde o Git versão 1.7.0, tem havido um --porcelain
opção para git status
. A saída de:
git status --porcelain
... foi projetado para uso por scripts - uma representação compacta da saída cujo formato permanecerá consistente nas versões. Como a página do homem diz:
Formato de porcelana
O formato de porcelana é semelhante ao formato curto, mas é garantido que não mude de maneira incompatível com versões entre as versões Git ou com base na configuração do usuário. Isso o torna ideal para analisar por scripts. A descrição do formato curto acima também descreve o formato de porcelana, com algumas exceções:
- A configuração da cor.status do usuário não é respeitada; A cor sempre estará desligada.
- A configuração do status.RelativePaths do usuário não é respeitada; Os caminhos mostrados sempre serão relativos à raiz do repositório.
Há também um formato -z alternativo recomendado para análise de máquinas. Nesse formato, o campo de status é o mesmo, mas algumas outras coisas mudam. Primeiro, o -> é omitido a partir de entradas de renomeação e a ordem de campo é revertida (por exemplo -> para se tornar para). Segundo, um NUL (ASCII 0) segue cada nome de arquivo, substituindo o espaço como um separador de campo e o término da Newline (mas um espaço ainda separa o campo de status do primeiro nome do arquivo). Terceiro, os nomes de arquivos que contêm caracteres especiais não são especialmente formatados; Nenhuma citação ou redução de barragem é realizada.
Então, como isso diz, você também pode considerar usar:
git status -z
... para um formato de saída ainda mais robusto.
git geralmente contém "porcelana", comandos de alto nível projetados para a interação diária do usuário, e "encanamento", que são comandos de baixo nível que possuem interfaces simples e estáveis para construir mais porcelana.Você pode encontrar uma lista no página de manual do git.Para usar o exemplo de sergo, git ls-files
é o encanamento para git status
.Embrulhar o encanamento é mais fácil e seguro do que a porcelana, embora possa exigir um pouco de confusão para descobrir que conjunto de encanamento corresponde a qual porcelana.
Eu descobri git ls-files
E estou totalmente satisfeito com seu formato de saída. git status
era muito orientado para o ser humano para a análise.
eu preferiria Mercurial
para git
com seu comando de status claro, mas com grandes arquivos binários, parece que git
Funciona melhor para mim.
Não sei nada sobre o MaxScript, mas se você descobrir como ligar para os conjuntos .NET, poderá usar o GitSharp e acho que seria a melhor e mais fácil opção!
Dê uma olhada nos testes de unidade da API GitSharp. Eles mostram como obter o status e outras operações de alto nível, como cometer, alternar ramos, verificar, visualizar mudanças de uma confirmação e assim por diante.
- Henon
Muitos max já estão usando conjuntos .NET. Essa deve ser a coisa mais fácil de se desenvolver. Além de analisar o texto .... é tão frágil. Eu apenas esqueceria de analisar o texto.