Ao converter para git, como devo lidar com um único diretório svn checkout?
-
27-10-2019 - |
Pergunta
Em breve, irei converter minha parte de um aplicativo de usar um repositório baseado em svn
para usar git
um.
Eu já usei git-svn
, mas toda a equipe está sendo movida para git
e me pediram para estar na vanguarda dessa mudança. Embora esteja feliz por entender como faço a maior parte da mudança, há um aspecto que ainda não resolvi.
Um diretório do meu repositório de configuração sempre foi usado para rastrear o diretório de scripts de um aplicativo externo em uma máquina Windows independente. O diretório de scripts para esse aplicativo está dentro do diretório de instalação de aplicativos, portanto, com svn
, fiz uma verificação apenas desse diretório no ponto apropriado.
Eu esperava poder continuar com essa estrutura, mas minha pesquisa sugere que clones estreitos em git
exigem que você mantenha a mesma estrutura relativa, o que seria difícil no meu caso.
Para ser explícito, desejo mapear o conteúdo de myrepo:config/scripts
para C:\application\scripts
.
Pelo que posso ver, tenho várias opções:
1. Use um repositório separado para esses arquivos de script.
Isso provavelmente seria o preferido, pois me permite clonar o repo exatamente no local certo.
Infelizmente, não existe atualmente nenhuma estrutura que permita que os dados de configuração (que são esses scripts) sejam armazenados em qualquer lugar que não seja o diretório de configuração. Como tal, isso exigiria alguma reestruturação de nossos repositórios além da conversão direta de svn
para git
que esperávamos.
2. Use pontos de junção.
Eu poderia colocar a cópia de trabalho git
do diretório config
em outro lugar no C:\
e, em seguida, usar um ponto de junção para fazer o diretório aparecer como um subdiretório do diretório do aplicativo, exatamente como Ger4ish sugere o uso de links simbólicos no unix.
Infelizmente, não tenho acesso de administrador a essa máquina, então isso não é tão simples quanto parece à primeira vista.
Outras opções?
Eu me pergunto se há opções que perdi.
Olhando para as respostas à pergunta Check-out esparso no Git 1.7.0? , posso encontrar o caminho, mas o requisito de manter a estrutura igual, combinado com a necessidade de fazer check-out em uma posição específica significa que esse método não funcionará.
Solução
Você já olhou para submódulos ?Você pode fazer um repositório git separado para seus scripts de configuração e adicioná-lo como um submódulo ao seu repositório principal.Isso permitiria que você fizesse o checkout diretamente em application/scripts
, mas ainda manteria o diretório de configuração no repositório principal.
Existem algumas nuances em como os submódulos se relacionam com o repositório principal, então você gostaria que qualquer pessoa que está se submetendo ao diretório de scripts entenda este fluxo de trabalho.