É possível definir variáveis de website para o git?

2

Eu gostaria de poder executar algo como:

git clone mw/Math.git

em que mw é igual a: https://git.wikimedia.org/git/mediawiki/extensions , ou seja, o repositório git das extensões do MediaWiki. Em vez de executar a forma completa desse comando:

git clone https://git.wikimedia.org/git/mediawiki/extensions/Math.git

existe uma maneira de definir essa variável mw de tal forma que o git a entende?

    
por BH2017 11.06.2015 / 10:36

2 respostas

3

Não que eu saiba, mas você poderia defini-los como variáveis Bash:

MW="https://git.wikimedia.org/git/mediawiki/extensions"
git clone $MW/Math.git

Para manter essa definição, você precisa colocá-la em algum lugar como ~/.bashrc (que é executada quando cada sessão do Bash é carregada).

A ideia de Rinzwind nos comentários é uma espécie de inverso da minha: crie uma função ou script que chame git e trate o Math como uma variável para ele. Novamente, isso é algo que você pode simplesmente entrar em uma sessão de Bash e testar, e então manter em ~/.bashrc :

function mw {
    git clone https://git.wikimedia.org/git/mediawiki/extensions/.git
}

mw Math

Ou mantenha-o como um script em ~/bin/mw (e chmod +x it):

#!/bin/sh
git clone https://git.wikimedia.org/git/mediawiki/extensions/.git

Se você precisar criar ~/bin/ , isso não será adicionado ao caminho até que você abra uma nova sessão de Bash.

    
por Oli 11.06.2015 / 10:41
0

Parece exatamente o que um controle remoto faz dentro de um repositório:

$ git init ttt
Initialized empty Git repository in /tmp/user/1000/home-tmp/ttt/.git/
$ cd ttt 
$ git remote
$ git remote add mw https://git.wikimedia.org/git/mediawiki/extensions
$ git remote                                                          
mw
$ git remote --verbose 
mw      https://git.wikimedia.org/git/mediawiki/extensions (fetch)
mw      https://git.wikimedia.org/git/mediawiki/extensions (push)

Mas normalmente, como neste caso, os remotos fazem parte de uma configuração de repositório.

Observação: o controle remoto global não funciona com o clone - então ele não se encaixa na pergunta.

O que você precisa é de um controle remoto definido globalmente.
Tecnicamente não vejo razão contra isso - e parece basicamente funcionar:

Mova a seção de configuração para um remoto criado em algum repositório (mesmo vazio) para a configuração global:

Remova a seção de ttt/.git/config :

[remote "mw"]
    url = https://git.wikimedia.org/git/mediawiki/extensions
    fetch = +refs/heads/*:refs/remotes/mw/*

$ git remote --verbose                                                

e insira-o em ~/.gitconfig :

$ git remote --verbose
mw      https://git.wikimedia.org/git/mediawiki/extensions (fetch)
mw      https://git.wikimedia.org/git/mediawiki/extensions (push)
    
por Volker Siegel 11.06.2015 / 11:19