Eu escrevi uma estrutura PHP e um CMS no topo da estrutura. O CMS depende da estrutura, mas a estrutura existe como uma pasta independente nos arquivos do CMS. Gostaria de mantê-los como projetos separados no GitHub, mas não quero ter a bagunça de atualizar o projeto CMS toda vez que atualizar o framework. Idealmente, eu gostaria que o CMS, de alguma forma, puxasse os arquivos da estrutura para inclusão em um subdiretório predefinido, em vez de confirmar fisicamente esses arquivos.
Isso é possível com o Git / GitHub? Nesse caso, o que preciso saber para que ele funcione? Lembre-se de que eu tenho um nível de experiência muito, muito básico com o Git - eu posso criar repositórios e confirmar usando o plug-in Git para Eclipse, conectar-me ao GitHub, e é isso. Atualmente, estou trabalhando sozinho nos projetos, então não tive que aprender muito mais sobre o Git até agora, mas gostaria de abri-lo para outras pessoas no futuro e quero ter certeza de que está certo.
Além disso, qual deve ser o meu fluxo de trabalho ideal para projetos com dependências? Qualquer dica sobre esse assunto também seria muito apreciada. Se você precisar de mais informações sobre minha configuração, basta perguntar nos comentários.
fonte
Respostas:
Primeiro, se você realmente deseja usar o git para isso, considere usar a funcionalidade Submodule :
A página vinculada contém uma discussão detalhada, incluindo exemplos de como usá-lo exatamente.
Dito isso, eu recomendaria não usar seu sistema de controle de versão para gerenciamento de dependências e, em vez disso, começar a usar uma ferramenta de compilação que possa lidar com essas coisas, como Maven ou Ant . Existe até uma ferramenta de construção específica para PHP em desenvolvimento chamada Phing , mas ainda não a usei. É mencionado em um artigo que discute sua pergunta: Controle de versão! = Gerenciamento de dependência .
A razão pela qual as ferramentas de construção podem se encaixar melhor no longo prazo é porque elas também oferecem suporte a diferentes tipos de repositórios, bibliotecas externas (e locais diferentes) e verificação extensiva. Se você, no entanto, apenas deseja integrar essas duas bibliotecas e não deseja nenhum aborrecimento adicional, a abordagem do submódulo provavelmente é suficiente.
fonte
Submodules Git é uma ótima maneira de gerenciar dependências de projetos git.
Se você estiver procurando outra abordagem:
O compositor pode fazer isso tudo por você. O Composer é um gerenciador de dependências para php. Sua sintaxe é do json. É bastante fácil e barato de usar.
Mais sobre compositor:
Na página de documentação , você pode encontrar um exemplo de como seu arquivo composer.json seria construído:
Depois de criar o arquivo composer.json e composer.lock para o seu projeto, você poderá instalar facilmente suas dependências:
composer.phar install
ou atualize-os:composer.phar update
ou crie um projeto específico a partir do packagist :composer.phar create-project acmeproject
fonte
Recentemente, comecei a usar uma ferramenta chamada Pundle para gerenciar as dependências do meu projeto. Ele suporta uma versão PHP, pacotes PEAR, repositórios Git e repositórios SVN como dependências e permite especificá-los facilmente por meio de um "arquivo Pundlefile".
Você também deve configurar suas Dependências para que os check-outs do Git / SVN sejam colocados em um diretório que não esteja sob o Controle de Versão (por exemplo, "fornecedor") para ter um novo começo em cada check-out e manter o repositório do seu projeto enxuto.
fonte