tl; dr
Tecnicamente, sua exigência é contraditória.
Em um nível mais filosófico, parece ser um choque entre o código aberto e a filosofia corporativa.
De qualquer forma ... vou sugerir algumas coisas que me vêm à mente
Tecnicamente
git
rastreia ou ignora um arquivo.
- O rastreamento é easi (est). Apenas não faça nada ... além de usar o git! E qualquer arquivo é rastreado.
- Ignorar é quase tão fácil - apenas certifique-se de que ele corresponda a algo em seu arquivo gitignore.
- Mas você não pode fazer as duas coisas!
- Principal ressalva: Mover um arquivo de rastreado para ignorado é algo não trivial - simplesmente adicionando o padrão adequado ao gitignore não o cortará uma vez rastreado. O relevante
Melhor pratica
Não inicie um projeto git sem criar um bom
- gitignore
Também relacionado
- gitattributes
Então, o primeiro (e um pouco irrealista)
Sugestão 1
- Comece um novo projeto git
- Faça arquivos gitignore e gitattribute apropriados
- Depurar se necessário com git-check-ignore
- Copiar, adicionar, confirmar seus arquivos normais
- Copie, adicione, status os arquivos não rastreados. Status deve estar limpo
Mas como eu disse isso parece não ser exatamente o que você quer, porque você quer algum tipo de arquivos compartilhados, mas não rastreados. Então você precisa
Untrack arquivos rastreados
Você realmente quer um idiota
Gancho pós-clone
Isso é tentado aqui
Mas é uma má ideia como explicado aqui
O que me leva ao
Diferença filosófica
- Um incorporador corporativo justificadamente quer controlar o que / como seus programadores de funcionários funcionam. O que implica vários tipos de controle de máquina
- Um software aleatório de código-fonte aberto instalado no github que controla o computador de outra pessoa aleatória é antiético e ilegal.
Portanto, se você fosse um grande jogador da Fortune 500, a opção natural seria usar o próprio git e adicionar um recurso de gancho pós-clone no seu garfo.
Um mais razoável e apenas um pouco mais inconveniente
Solução 2
- Escreva seu próprio script de pós-clone, mas manualmente chamado
- … Que faz a exigência da cópia se ausente saem sozinho se atual
- E adicione um passo (manual) ao seu time: (1) clone (2) call script
- E não esqueça o gitignore !!
Se esta solução faz sentido você pode realmente preferir
Solução 3
Inverta o script-dentro-git para git-inside-script
ou seja, peça à sua equipe para apenas baixar / copiar e executar um script que
- Corre
git clone
- Verifica a existência / propriedade desses outros arquivos
- Cria / baixa-los se necessário (talvez de uma fonte independente do seu repo principal)