Por favor, dê as boas-vindas a Manish Sinha para a equipe de redatores! Manish é um indivíduo muito inteligente, com experiência em trabalhar em tudo, do Zeitgeist ao Elementary.
Oi OMG! Ubuntu! leitores, este é o meu primeiro post. Estarei escrevendo principalmente sobre tópicos técnicos como editoriais.
Meu objetivo é explicar assuntos técnicos difíceis de uma forma simples que seja útil para aspirantes a contribuidores que descobriram que a contribuição é muito difícil por causa da curva de aprendizado íngreme associada a certas ferramentas.
A colaboração é provavelmente a tarefa mais difícil e demorada ao trabalhar em equipe. Quando você ouviu a frase “controle de versão” pela primeira vez, pode ter começado a pensar sobre código e programadores. A questão da colaboração não é apenas com os programadores, mas também com outras áreas e profissões, nomeadamente com design, documentação, etc. O controle de versão como ferramenta é imensamente famoso dentro dos círculos de programação, mas seu uso não se limita apenas ao código-fonte.
Quando você está trabalhando em equipe na mesma coisa (como um design semelhante ou um conjunto de arquivos de documentação), o maior problema pode ser garantir que cada pessoa tenha o trabalho mais recente. Quando todos os colaboradores trabalham juntos, eles fazem alterações em todas as partes e, em seguida, as alterações precisam ser compartilhadas.
Uma solução é enviar um e-mail com as alterações apenas para abrir sua caixa de correio e se perder entre as fotos do lolcat ou reddit. As chances de pular alguns deles também são altas, pois você pode acabar recebendo muitos e-mails. Se você e outra pessoa alterarem o mesmo arquivo, retirar as alterações dele e incorporá-las às suas pode ser um pesadelo.
Outra solução é enviar todas as alterações para uma pessoa e ela se encarregará de mesclar vários arquivos e mantê-los atualizados. Isso envolve uma pessoa dedicada a este trabalho. Que perda de tempo!
Outro problema que você pode enfrentar é que em algum momento você descobrirá que a situação atual de seu projeto ou documentação não é tão boa e aquela que você tinha há 4 dias parecia melhor. O que você vai fazer?
Veja os arquivos enviados a você 4 dias atrás por alguém. Procure esses arquivos em sua caixa de correio, junte todos os pedaços e peças e você ainda pode não ter certeza se possui o conjunto correto de arquivos.
Que tal alguém te perguntar - “Quanto trabalho vocês fizeram no último mês”. Pode haver um momento em que você queira se gabar de quanto trabalho vocês realizaram como equipe ou, se você estiver trabalhando como contratado ou funcionário, é útil ter um registro do trabalho.
Os principais problemas destacados acima são:
É aqui que os sistemas de controle de versão (VCS) entram em cena. Estou evitando o termo “sistema de controle de origem”, pois parece que se destinava apenas ao código-fonte. Os dois problemas acima destacados são resolvidos de forma brilhante pelo VCS.
Em suma, a maior parte do VCS consiste em duas partes. Um servidor central que é usado por todos os membros da equipe como uma área comum onde eles colocam seu trabalho e também buscam o trabalho de outras pessoas de lá. É uma tentativa de sincronizar-se com todos os outros.
A segunda parte, a ferramenta cliente do sistema de controle de versão ajuda a enviar seu trabalho para o servidor e extrair o trabalho de outros do servidor.
Se você é uma pessoa que acabou de entrar para a equipe, convém obter todos os arquivos. Nesse caso, você criará um clone do conjunto de arquivos.
Você fornece a URL do servidor para seu cliente VCS e ele irá buscar todos os arquivos para você. Então você pode começar a trabalhar nesses arquivos.
Depois de algum trabalho nos arquivos (consertando bugs, adicionando novos recursos, etc.) você decide que este trabalho é suficiente por enquanto e deseja compartilhar essas alterações com outras pessoas.
O cliente VCS rastreia todos os arquivos. Você pode pedir que ele mostre quais arquivos você alterou e o que você alterou nesses arquivos.
Depois de verificar se as alterações estão corretas, você precisa confirmá-las. Um commit nada mais é do que um ponto de salvaguarda ou um marco. Você pode ter muitos pontos de salvamento em uma base de código.
Você pode até encontrar as mudanças que você fez entre o 3º e o 4º commit ou o 23º e 25º commit. Isso ocorre porque seu VCS conhece a situação atual dos arquivos e também sabe qual conteúdo estava presente quando você fez o 23º commit e qual conteúdo estava presente quando você fez o 26º commit.
Na captura de tela abaixo, mostramos as alterações feitas entre o commit nº 1714 e 1716:
Depois de fazer o commit, seu VCS lhe dirá que não há mudanças pendentes.
Isso acontece porque você comprometeu todas as alterações pendentes. Neste caso, você precisa enviar suas alterações no servidor. Isso é feito enviando suas alterações para o URL remoto de onde você fez uma cópia dos arquivos.
Depois de empurrar, você pode se interessar em saber se outra pessoa empurrou seu trabalho enquanto você fazia suas alterações e o confirmava. Isso é feito solicitando ao seu cliente VCS que extraia as alterações do servidor remoto.
Você pode tentar puxar novamente depois de algum tempo se souber que outra pessoa da equipe também empurrou as mudanças. Normalmente, é uma boa prática obter as alterações antes de começar a trabalhar nos arquivos. Isso pode não ser necessário em todos os cenários, mas você sempre terá as alterações mais recentes, o que geralmente é melhor.
Na captura de tela abaixo, tento puxar as alterações e fui notificado de que não há mais alterações.
Esta foi apenas uma introdução ao que realmente é um sistema de controle de versão.
O que usei nos instantâneos é o bazar (também conhecido como. bzr) que é usado no Launchpad e em alguns outros lugares (por exemplo, GNU Savannah).
Os outros na categoria de VCS são Subversion, Git, Mercurial etc.
Existem dois tipos de controle de versão: Centralizado e Distribuído. O Bazaar é um exemplo de sistema de controle de versão distribuído - DVCS. Git e mercurial também caem nesta categoria, enquanto o Subversion (svn) é um VCS centralizado.
Este artigo foi direcionado a pessoas que sempre temeram usar qualquer tipo de sistema de controle de versão, então se você começar a criticar, cometerá muitos erros! Os artigos futuros serão muito precisos e usarão termos reais.
Em partes futuras, você deve esperar:
.. e muitos mais.
Obrigado!
Tudo Ubuntu, diariamente. Desde 2009.