Onde posso encontrar recursos "SVN para usuários do Git"? [fechadas]

18

Então, aceitei um trabalho em que a empresa usa SVN (mas passará para o Git em algum momento no futuro). O problema é que eu não conheço SVN. Eu tentei várias consultas do Google e tudo o que posso encontrar são tutoriais em SVN-> Git, blogs "Por que o Git é melhor que SVN" e uma "folha de dicas" específica que fornece (alguns) comandos comparáveis ​​...

Curto de ler o livro O'Reilly no SVN, quais são o breve (mas não muito breve) instruções para SVN para usuários do Git?

agent154
fonte
3
Em suma: a) não há nenhum índice, b) svn up = git pull, c) SVN commit = git commit && git empurrar d) ramos são emulados por diretórios ... ;-)
Johannes
1
Eu não sei como eu posso fazer isso mais no tópico ...
agent154
5
De jeito nenhum. Ao lado de qualquer coisa é offtopic no P.SE.
JensG
@ agent154 não peça que sejamos um mecanismo de pesquisa de multidões para você. Identifique o problema que você está tendo - o problema não é "onde posso encontrar coisas no svn" é "Estou tentando fazer algo e não consigo descobrir como fazê-lo". Se algo é específico para o comando 'svn' e você está trabalhando para escrevê-lo, pergunte no Stack Overflow. Se algo sobre o fluxo de trabalho e a organização do svn (quando ramificar, quando mesclar, como trabalhar com outros desenvolvedores) - pergunte aqui.
2
Acho que o problema identificado é a falta de recursos, mesmo que remotamente disponíveis, para entender o SVN como um usuário do Git. Francamente, eu consideraria uma discussão sobre isso super útil depois de ter consultado várias páginas dos resultados do Google / DuckDuckGo sem encontrar nada além do que o OP mencionou.
Metagrapher

Respostas:

8

A referência canônica é o Subversion RedBook . Independentemente de suas habilidades anteriores, leia isso de novo e você obterá todas as informações de uso necessárias. Não é difícil ou completamente estranho, a maioria das pessoas diz que o SVN é muito mais fácil de entender do que o git, então você deve ficar bem lendo um pouco os comandos principais. O capítulo de uso básico deve colocá-lo em funcionamento sem problemas.

Existem 2 diferenças principais:

  • confirmar = enviar para o repositório central. Não há rebase ou confirmação local, nem puxa.
  • ramificação é por diretório. Melhor pensar em todo o repositório como uma estrutura de diretórios, a ramificação é como fazer um link simbólico com a semântica de copiar na gravação. Enquanto no git você ramifica o repositório inteiro e alterna entre eles para que o novo ramo 'sobreponha' sua cópia de trabalho, com o SVN você pode trocar partes do seu repositório. Geralmente, as pessoas ramificam em uma pasta de nível superior (geralmente chamadas ramificações), de modo que a troca se torna muito mais parecida com o estilo de trabalho 'overlay' do git.

A ramificação é trivial, a fusão não é nem de longe tão ruim quanto os apologistas do DVCS desejam, especialmente se você se ater ao trio "padrão" de pastas de nível superior (chamadas tronco, ramificações e tags).

Existem alguns bits nos quais o SVN supera o git, diretórios esparsos vêm à mente - onde você faz check-out de apenas parte de seu repo. Quando você precisar de mais peças, atualize apenas o que precisa. Se você tem um grande repositório (por exemplo, um produto essencial e vários plugins), isso é brilhante.

Existem alguns bits que não são tão bons quanto o git, o temido conflito de árvores vem à mente - onde você tem um conflito no nível do diretório (ou seja, alguém excluiu um arquivo que você editou)

Se você estiver no Windows, use o TortoiseSVN. É demais.

gbjbaanb
fonte
Depende. A fusão com o SVN fica ruim quando os arquivos são movidos (que é essencialmente uma forma educada de excluir + adicionar gerenciada pelo próprio SVN) por alguém E alterada por outra pessoa. Fora isso, boa resposta.
JensG
1
Eu mencionei o problema de conflito de árvore ... Esse estado é um problema para outras scms, embora eu entenda que o git usa uma heurística para detectar se o arquivo movido é o mesmo, ele ainda pode errar se as alterações forem significativas ( por exemplo, o arquivo sendo dividido em 2).
Gbjbaanb
O Git não precisa de heurísticas para detectar alterações na árvore - ele precisa que o usuário mova o arquivo git mv. SVN tem svn move, mas desde ramificação e mesclagem no SVN é uma espécie de um truque, eu não acredito que ele pode resolver automaticamente conflitos de árvore como git faz ...
Idan Arye
3
@IdanArye git mvé implementado como adicionar + remover. git usa heurística para determinar se um movimento ou cópia ocorreu durante um commit (acho que o padrão é, "é de 80% + do arquivo o mesmo?")
Izkata
3

Use git svn, se possível. Eu estive na sua situação e após meio ano de frustração, mudei para o git svn e fiquei feliz desde então.

O Git svn permite que você use o repositório localmente e a confirmação para o servidor SVN é então tratada por um git svn rebaseque refaz as alterações locais no tronco do subversion e, em seguida, git svn dcommitque efetua o commit refazido.

Talvez não seja o ideal para o uso avançado do Subversion, mas como você está usando o git localmente, tudo está bem.

Ao usar o git clone, você não deve clonar a pasta raiz do subversion, mas o diretório de destino diretamente (clonar trunk). Isso fará com que o git seja executado muito mais rápido, caso contrário, sua cópia de trabalho pode se tornar enorme.

Isenção de responsabilidade : Eu não sei como é a situação quando você deseja criar ramificações do Subversion, etc. As equipes com as quais trabalhei não usavam ramificações (apenas as ramificações locais do git).

wirrbel
fonte