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?


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.


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).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.