Git e sub repositórios

6

Existe alguma maneira de forçar o git a incluir arquivos e diretórios em outros repositórios que residem em algum lugar dentro do repositório atual?

A razão pela qual eu pergunto é que tenho um layout assim:

Projects
  |- Some Project
  |   |- .git
  |- Another Project
  |   |- .git
  |- Yet Another Project
  |   |- .svn
  |- A non versioned Project
  |- etc..

Agora, o que eu quero fazer é git init em Projetos e, em seguida, executar uma tarefa cron diária que envia para um repositório vazio em uma pasta cujo backup é feito com os seguintes comandos

...<set variables>...
git add -A
git commit -m "Automatic Update $Date $Time"
git push --mirror --repo=/backedup/Projects

Meu plano era adicionar .git , .svn , .hg , etc. a .gitignore e ter isso como um backup de segurança dos arquivos.

Edit: Eu tenho algumas ótimas sugestões abaixo, mas ainda estou curioso sobre se este caso em particular é possível. Fazer o backup de toda a pasta com o rdiff ainda significa fazer o backup dos arquivos inflados na minha mídia de backup, enquanto o repositório nulo leva 4 MB em vez de 160 MB, também quero saber se é possível agora que estou pensando nisso ou vai perder o sono.

    
por Don 29.07.2010 / 23:20

2 respostas

3

Use submódulos git

Com submódulos, você pode plantar repositórios em outros repositórios sem rastrear detalhes específicos das alterações do sub-repositório.

Esse recurso foi criado especificamente para lidar com projetos que dependem de dependências controladas em outro lugar.

Eu daria alguns casos de uso mais detalhados, mas ainda não tive motivos para usar esse recurso em particular.

    
por 09.02.2011 / 02:58
0

Este caso particular não é possível. E não é prático.

  • O repositório Git aninhado seria detectado e o git add -A no diretório raiz não levaria em conta os subdiretórios aninhados .git .
  • .svn funcionaria, mas precisaria de um .gitignore cuidadosamente calibrado para ignorar todo o resto.

Um trabalho de backup separado com uma cópia incremental sobre um ssh compactado, como sugerido por akira nos comentários, é um melhor solução.

    
por 02.08.2010 / 07:49

Tags