Pergunta

Eu tenho algumas coisas de shell configuradas que definem dinamicamente os aliases, dependendo do tipo de repositório VC o CWD contém - então, por exemplo, 'd' executa 'svn diff' ou 'git diff', dependendo. (Baseado em esta postagem do blog, se alguém estiver interessado ...)

Eu gostaria de definir alguns aliases de maneira diferente, dependendo de estar em um repo Git versus um repo Git-SVN. Existe uma maneira fácil de dizer a diferença entre os dois?

Foi útil?

Solução

Você deve ter um pouco de cuidado ao decidir quais repositórios são exatamente repositórios Git-SVN. Um repositório pode conter mais de um repositório SVN.

A solução de Kafka só funcionará se o repositório SVN foi clonado com a opção -s ou -std -layout, na qual realmente lá é um ramo trunk.

A resposta do Codelogic só funcionará se houver um repositório SVN chamado svn - Não há exigência de que isso seja verdade.

A maneira mais fácil de verificar se lá é Uma remoção de SVN na configuração é:

$ git config --get-regexp ^svn-remote

Isso encontrará qualquer repositório Git-SVN configurado, o que for chamado. Ele sairá com o status 0 se houver uma correspondência e 1 se não houver correspondência.

Mas isso não significa que o repositório SVN seja realmente usado. Também pode ser que alguém tenha importado um repositório SVN, mas usa é como um submódulo ou como uma sub-árvore, ou mesmo não. Se os metadados no repositório Git-SVN foram ativados, você pode ver se alguma revisão do SVN foi usada na cabeça atual usando algo assim:

$ git rev-list -1 --grep='git-svn-id' HEAD

Mas isso talvez seja um pouco complicado. Você decide.

Outras dicas

Você provavelmente pode usar a saída do git config comando para diferenciar entre um repo Git e Git-SVN.

git config --get svn-remote.svn.url

deve devolver o URL SVN sendo sincronizado, se houver um.

Há também um ramo chamado Trunk e um ramo chamado Trunk@[Rev]. No entanto, acho que a abordagem do codelogia é mais fácil e limpa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top