Eficiente de backup muitas versões de um repositório git com o ramo de espaço de nomes

StackOverflow https://stackoverflow.com/questions/3240900

  •  15-09-2020
  •  | 
  •  

Pergunta

No trabalho, utilizamos, Necessariamente, para o controle de versão.Há problemas com esta:1) com este modelo centralizado, não podemos verificar alterações até que estejam prontos para a regressão.Isso significa que nós não temos nenhum controle de revisão durante o processo de desenvolvimento.2) Nós não volta até o nosso cliente vista o depósito, então o nosso trabalho é insegura, até que o check-in.3) Nós temos problemas de partilha de nosso código com cada um a menos que implorar para ter uma integração filial.Eu estou tentando configurar um opcional git fluxo de trabalho para os desenvolvedores que querem usar o git para vencer estes problemas.

O plano é usar o git-p4 para interface com o forçosamente servidor e crie um privado repositório git.Esta encarrega-se de 1).Eu pretendo usar a integração do gerenciador de fluxo de trabalho descrito no Git Pro (http://progit.org/book/ch5-1.html) para ter nossos desenvolvedores publicar pública de recompra, tendo o cuidado de 3).

Blessed Repo

Finalmente, eu quero um lugar onde os desenvolvedores podem levar suas alterações, de modo que eles vão puxado para backups noturnos / as cópias de segurança.A razão de nós não fazer o backup de nosso cliente vistas agora é porque fazendo noturno arquivamento de cópias de segurança de todos a opinião do cliente é o espaço ineficiente.Temos uma grande quantidade de desenvolvedores, e produzem um monte de código.Não podemos ser redundante o backup de todos exibição do cliente.Queremos apenas de preservar o alterações exclusivas que eles estão fazendo só.

O meu pensamento era ter um nua repositório git, chamá-lo de omni-backup, que todos podem empurrar todas as suas ramificações (e sinta-se livre para sugerir alternativas).Este seria utilizar o git é eficiente em termos de espaço de hash sha-1 e assegurar que apenas versões exclusivas de cada arquivo de backup.O truque é que todas as cópias de segurança de repositórios têm de ser parte do mesmo acordo de recompra para obter a eficiência de espaço.

O problema é quando duas pessoas completamente diferentes ramos escolheu o mesmo nome para o seu ramo.E. G.Bob tem um feature ramo e Jane tem uma feature no ramo, mas eles são para diferentes funcionalidades.Se Bob empurra para a omni-cópia de segurança, Jane não ser capaz de, como ele não seria um avanço em série.

Agora, o que eu seria, de preferência, com a acontecer é que, quando Bob empurra sua característica de filial, sucursal será renomeado para bob-feature no omni-backup controle remoto.E quando ele puxa o recurso de omni-backup, ele recebe de volta bob-feature.

Isto não parece muito fácil de se realizar no git.Parece que eu posso usar push ganchos documentada em http://www.kernel.org/pub/software/scm/git/docs/git-receive-pack.html pós-receber gancho para reescrever o nome do ref imediatamente depois de escrito, e, em seguida, algo poderia ser feito para reverter o processo no caminho de volta, mas ele se sente frágil.Alguém tem uma idéia melhor?


editar:para VonC (Porque o código é uma merda nos comentários) O seu caminho parece promissor, VonC, mas eu não vejo como o fato de que é uma busca que irá superar os problemas de espaço de nomes.Você está sugerindo um cron que sabe como mudar o ramo?

como (muito sujos):

foreach my $user (@users) {
    my @branches = split(/s/,cat `$LDAPSERVER/$USER/$REPO/.git/refs/heads`);
    foreach my $branch (@branches) {
        system "git fetch $LDAPSERVER/$USER/$REPO/$BRANCH:+$USER$BRANCH"
    }
}
Foi útil?

Solução

Por que você precisa para desenvolvedor para empurrar para omni-backup repo?

Para fins de backup, gostaria de, ao invés de registrar as diferentes desenvolvedor do repositório remoto, e fazer um git fetch todas as noites (a partir do omni-backup do servidor) em todas as remoto acordos de recompra.
Dessa forma, nenhum ramo nome de conluio possível.E um processo mais automatizado (o desenvolvedor não precisa explicitamente empurrar qualquer coisa em um acordo de recompra que ele/ela não trabalhar diretamente com, mas considere apenas para cópia de segurança)

Então eu gostaria de produzir um pouco agradável git archive de omni-backup e guarde-a fora.

Outras dicas

Se você pode obter os desenvolvedores a seguir algumas orientações, git push pode fazê-lo corretamente.

Se você executar este comando:

git push omni-backup feature:bob-feature

onde omni-backup remoto ref para o repositório, então o bob ramo de funcionalidade, vai empurrar para o bob-recurso em omni-cópia de segurança.Mas, se confiar que os desenvolvedores é indesejável, mudar a direção do fluxo e ter omni-cópia de segurança puxe a desenvolvedores de repositórios, como VonC sugere, é a melhor solução

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top