Como os desenvolvedores de aplicativos profissionais usam sistemas de controle de versão, como GIT e Subversion?

9

Eu sou um desenvolvedor iniciante e tenho me perguntado desde o início, como profissionais usam ferramentas como GIT e Subversion (não tenho um entendimento muito bom sobre essas ferramentas), para atender às necessidades de seus projetos. Se eles o usarem, como eu configuraria algo assim?

Meus aplicativos não são tão grandes e ainda não estou trabalhando em equipe, eles me ajudariam muito?

Existem perguntas neste site sobre como usar as ferramentas, mas preciso de suporte para iniciantes.

Wolfi
fonte
5
Git e Subversion vêm com instruções; eles são basicamente um repositório que armazena código de desenvolvimento de maneira estruturada. Os desenvolvedores individuais se beneficiam de ter um registro completo das alterações de código e um recurso robusto de backup. As equipes de projeto se beneficiam da capacidade de compartilhar o mesmo repositório de código-fonte, mantendo as alterações sincronizadas entre as estações de trabalho.
9788 Robert

Respostas:

13

O controle de origem é onipresente - pode-se até dizer que você não pode se chamar um desenvolvedor profissional se não o estiver usando. Mesmo quando se desenvolve sozinho, o controle de origem ainda oferece alguns benefícios. No final, fornece uma história e um extenso caminho de desfazer. Também libera você para experimentar muito mais, com a certeza de que, se você não gostar da nova versão, poderá sempre voltar ao que tinha antes.

Dito isto, os fluxos de trabalho, mesmo dentro de um sistema de controle de origem como Subversion ou Git, variam imensamente de equipe para equipe. O melhor lugar para começar é provavelmente escolher um sistema de controle de origem e se familiarizar com seus fluxos de trabalho padrão (mantendo em mente que você terá que alternar fluxos de trabalho ao longo de sua vida profissional).

Para começar, eu recomendaria o Git. Sou fã do Git, mas, mais especificamente, a escolha do Git permite que você comece a trabalhar sem servidor e só configure um servidor quando isso fizer sentido para você. O Subversion, por outro lado, requer um servidor e a configuração de um servidor, embora não seja extremamente difícil, é assustadora quando você não está familiarizado com esse tipo de coisa.

Aqui está uma boa visão geral de algumas boas regras práticas para controle de origem em geral: http://scottonwriting.net/sowblog/archive/2008/11/13/163320.aspx

Ao trabalhar sozinho, você não precisa de muito fluxo de trabalho. Comprometa cedo, comprometa-se frequentemente. Se você começar a lançar versões, marque seus lançamentos. Crie ramificações para experimentos ou longos trabalhos divergentes (o Git torna isso mais barato e mais simples que o Subversion).

Michael
fonte
11
Boa resposta, exceto um ponto. Definitivamente, eu não escolheria o subversion que precisa de servidor, pois é a maior desvantagem, em parte porque eu realmente o usei sem ele com bastante frequência; o repositório pode viver no diretório local e, em seguida, a configuração é de comando único. A principal diferença entre o Git e o Subversion é que os sistemas distribuídos como o Git são muito mais flexíveis do que os sistemas centralizados como o Subversion.
Jan Hudec
5

Os sistemas de controle de origem (SVN, Git etc.) em um nível muito simplista permitem manter o histórico de alterações dos arquivos. Isso permite que você veja como o seu código mudou ao longo do tempo e reverta as alterações que você não deseja (por exemplo, a alteração não funciona conforme o esperado, você pode reverter o código para um estado conhecido anteriormente). Isso é algo que até o desenvolvimento por conta própria se tornará inestimável para você quando você começar a usá-lo.

Assim que você estiver trabalhando com outras pessoas em uma equipe, os benefícios aumentam ainda mais, pois várias pessoas podem alterar o mesmo arquivo e, se as alterações não conflitarem (por exemplo, 2 pessoas alteram seções diferentes do arquivo), as alterações serão mescladas automaticamente. Se houver algum conflito, você poderá ver as alterações ao lado dos colegas e discutir com eles como mesclar as alterações.

Você também pode criar instantâneos da base de código (geralmente chamada de tag) ao liberar uma versão do código para poder depurar facilmente problemas, mesmo que a fonte principal tenha avançado com novos recursos que ainda não foram lançados.

Aqui estão alguns recursos úteis:

Instalando e executando o Subversion e o Tortoise SVN com o Visual Studio e .NET

Controle de versão com Subversion

Trevor Pilley
fonte
11
Não dar +1, porque aprender o Subversion como primeiro sistema é meio contraproducente hoje em dia, quando todo mundo está mudando para sistemas distribuídos.
Jan Hudec
3

Tutoriais para iniciantes

Existem ótimos tutoriais (vídeo e texto) que podem ajudá-lo a começar de um nível muito básico. O Git parece ter uma ótima abordagem para introduzir o tópico de maneira suave para iniciantes, que mostra o porquê primeiro e usa repetição, definição e gráficos para ajudá-lo a lembrar os nomes e funções dos comandos principais.

SVN

O SVN pretendia ser o CVS melhorado. O CVS (sistema de versão simultâneo) trabalhava em itens de um arquivo por vez, o SVN normalmente trabalhava em itens de um diretório ou árvore de diretórios por vez. O SVN (e o CVS ou outros sistemas) pode ser importante se você o estiver usando no trabalho, mas minha opinião é que melhoramos significativamente nosso entendimento do que é necessário para fazer o controle de origem a cada poucos anos, assim como você preferiria um modelo tardio computador, você deve preferir uma ferramenta de controle de origem do modelo atrasado. É um investimento enorme para alterar sistemas, e o histórico de código pode ser perdido, embora para muitos sistemas existam conversores que permitem migrar seu código, além de histórico e outros artefatos criados pelo sistema que está sendo aposentado.

O controle de fonte profissional atende às necessidades profissionais

Sua pergunta "Como os profissionais usam ferramentas como GIT e Subversion para atender às necessidades de seus projetos?" relaciona-se estreitamente com a pergunta "Como as equipes trabalham juntas sem se atrapalharem enquanto ainda trabalham o mais rápido possível?"

O código está mudando frequentemente com alguns desenvolvedores criando código que outros desenvolvedores usarão e com uma variedade de partes interessadas que precisam de níveis diferentes de estabilidade versus inovação. Os sistemas de controle de origem ajudam a armazenar código para uso da equipe, mantendo cada mudança no contexto com versões que mudam com o tempo e, geralmente, também com ramificações que são cópias controladas do código que servem para isolar grupos de mudanças de outros grupos de mudanças.

Reunir as coisas de novo, mesclar o trabalho de muitos membros da equipe é uma tarefa que, no SVN e em sistemas mais antigos, era centralizada e difícil. Para equipes que usam o Git, a fusão se torna mais simples e mais acessível à influência de toda a equipe, em vez de alguns especialistas. No SVN, a ramificação pode ser uma questão pessoal, mas a fusão geralmente causa impactos dolorosos na equipe, e o movimento do código de volta à linha principal pode ser doloroso da perspectiva de obter permissão, evitar quebras e o nível de esforço necessário para a tarefa .

Em um repositório de controle de origem estabelecido, os profissionais podem atender a outras necessidades, como diagnosticar problemas à causa raiz. Se havia versões do código que costumavam funcionar e problemas recém-encontrados que ocorrem na versão atual, é possível avançar e retroceder no histórico para identificar quando o problema ocorreu. No SVN, esse recurso é imaturo, mas no Git a pesquisa da última versão funcional / primeira falha é suportada por um comando chamado git bisect. O problema será causado por uma das alterações de origem entre as duas versões, o que é potencialmente um diagnóstico muito mais fácil do que uma pesquisa em toda a base de códigos.

Desculpe por divagar, espero que isso ajude você a usar o controle de origem.

DesenvolvedorDon
fonte
0

Minha equipe usa um sistema de controle de versão de equipe desenvolvido em casa. (Infelizmente, o Git parece não funcionar ainda nos arquivos de origem "nativos" do IBM i). equipe VCS.

Como se costuma dizer na votação ... comprometa-se cedo, comprometa-se frequentemente. Enquanto trabalho em novos recursos, comprometo-me. Confirmo entre compilações e a cada tentativa de corrigir erros do compilador, sempre que faço alterações durante o teste e a depuração. Isso permite que seja mais simples tentar várias variações de um tema e, se necessário, voltar com facilidade, especialmente quando uma alteração é coordenada em vários arquivos.

O Git melhorou a maneira como abordo o desenvolvimento.

WarrenT
fonte
'O Git parece não funcionar ainda nos arquivos de origem "nativos" do IBM i)' - O Git deve funcionar em qualquer arquivo. Qual é o problema aqui?
Marnen Laibow-Koser
@ MarnenLaibow-Koser A maioria dos desenvolvedores do IBM i está trabalhando com arquivos de origem com o que poderíamos chamar de sistema de arquivos nativo (legado) QSYS, onde os arquivos de origem têm um formato de comprimento fixo interno. Cada linha começa com um número de sequência de 6 dígitos, uma data de alteração de 6 dígitos e a linha de texto do código-fonte. A sequência e a data de alteração podem ser alteradas, mesmo que o código fonte de uma linha não tenha sido alterado. As soluções podem ter sido desenvolvidas mais recentemente. A IBM e outros agora estão suportando o git no IBM i. E não deve haver um problema com a origem nos arquivos de fluxo "normais" em outros sistemas de arquivos IFS no IBM i.
21818 WarrenT
Oh Deus, eu me lembro vagamente disso do desenvolvimento do AS / 400 há 20 anos. Mas não há nenhuma razão, eu acho, que o Git não funcione com esses arquivos. Pode ser necessário escrever um driver de mesclagem que desconte os números de linha, mas isso deve ser fácil. (Eu me pergunto se isso é o que a IBM fez ...)
Marnen Laibow-Koser
Mas, se você retirar os números da linha e a data da alteração da linha, você os perderá quando verificar algo do Git. Não é fácil convencer algumas pessoas de que não precisam mais dessas datas, depois de depender delas por talvez três décadas. Sim, eu sei que a culpa do Git fornece a mesma coisa, mas as pessoas relutam em desistir de algo de que dependem há tanto tempo, mesmo que não seja necessariamente um argumento lógico.
warrent
Você pode criar um filtro de limpeza / manchas do Git para restaurar a data da culpa do Git. :)
Marnen Laibow-Koser 12/02/19