git annex, como adicionar diretórios git-sub

3

Eu tenho um cenário em que estou movendo toda a minha estrutura de arquivos para o git-annex.

Ele contém meus projetos atuais, projeto antigo, mídia, itens pessoais e assim por diante. Como resultado, ele contém muitos repositórios git que desejo anexar por razões históricas.

Mas, o git annex ignora os arquivos que já estão registrados no git. Mesmo quando eu uso --force continua ignorando-os. Como posso adicionar esses arquivos sem excluir a pasta .git?

Por que eu quero fazer isso?

Eu tenho uma estrutura de pastas completa e bem organizada de tudo o que é importante para mim. Agora eu mantenho a pasta INTEIRO no meu laptop, com 2 backups para HDs externos. Isso significa que muito do espaço do meu HD é usado por arquivos que eu realmente preciso de acesso uma vez por ano. O Git Annex resolveria esse problema mantendo um registro dos arquivos usados com menos freqüência sem que as coisas fiquem desorganizadas (e, portanto, eventualmente perdidas), para que eu possa mantê-las em outros locais. Sinta-se à vontade para sugerir outras ferramentas que possam atender à minha necessidade.

    
por gorgabal 17.01.2017 / 22:47

2 respostas

1

Uma solução alternativa do usuário EvanDeaubl: link

I'm currently storing git repos inside of my annex by using a separated git dir, so that git doesn't detect the nested repository and balk at adding it. Doing a git clone or git init with a --separate-git-dir= argument puts what would normally be in .git in that directory, and creates a simple .git file in its place which references the separated git dir.

When I'm not using the repo, I move the .git file out of the directory, and everything looks like regular files to git-annex. When I want to use it, I move it back in place, and any git operations inside the repo directory use the inner git repo itself.

Another option I used for a while was to store bare repos in the annex, and doing checkouts from those repos.

Não é exatamente uma solução, mas pode ser uma solução viável.

    
por 17.01.2017 / 23:58
0

Como você mencionou outras ferramentas, pensei em compartilhar o que faço com o git simples:

Eu tenho uma unidade externa onde guardo meus backups. Eu uso o rsync para mantê-lo atualizado com o que está no meu computador. Eu tenho um repositório git no diretório raiz da unidade externa e nunca sincronizo uma pasta de origem diretamente no diretório raiz, sempre em um subdiretório - assim, se uma pasta de origem for um repositório git, ela não entrará em conflito com o git repositório na raiz da unidade externa. Como os arquivos no meu computador incluem repositórios git, tenho um script que segue estas etapas para qualquer pasta que eu esteja fazendo backup:

  1. rsync --delete src / dst /

  2. pesquisa em profundidade de todos os repositórios git no diretório de destino (os diretórios que contêm os subdiretórios .git)

  3. para cada repositório encontrado, git add dst / caminho / para / repo / (observe a barra final)

  4. finalmente, no diretório dst, git add. (ponto)

O resultado é que eu tenho um repositório git que contém o estado atual de todos os meus arquivos, e eu posso olhar para trás no tempo, como de costume, com o histórico do git. Os repositórios git também são submetidos a backup, mas seu estado é separado do repositório git na raiz da unidade de backup. Então, quaisquer arquivos não-rastreados, não-comprometidos que eu tenha em qualquer um dos meus repositórios git, estão comprometidos com o repositório git na raiz da unidade de backup.

Os repositórios git na unidade de backup (por exemplo, dst / caminho / para / repo / .git) são apenas as cópias mais recentes sem meta-história.

    
por 19.03.2019 / 01:44

Tags