Skip to content
Snippets Groups Projects
Select Git revision
  • devel default protected
  • issue#67
  • master protected
  • issue#56
  • week07
  • week06
  • week05
  • week04
  • week08
  • week03
  • week02
  • week01
12 results

cap05.Rmd

Blame
  • title: "Serviços Web para Projetos Git"
    author: "PET Estatística UFPR"
    output:
      html_document:
        highlight: pygments
        toc: true
        theme: flatly
        keep_md: true
    library(knitr)
    opts_chunk$set(comment=NA)

    Serviços Web para Git

    No capítulo anterior vimos como configurar um repositório remoto em um servidor. Esse procedimento possibilita trabalho em equipe visto que todos com acesso à servidora, então podem clonar, subir ramos, etc. Apesar do servidor centralizar as contribuições de todos os usuários, estes terão que se comunicar e manter os compromissos sobre o projeto em de outra forma, por email direto, lista de email, lista de discussão. Para que um desenvolvedor saiba o que os outros fizeram, ele terá que periodicamente dar fetch, navegar no histórico, ver diffs, etc.

    O Git tem muitos serviços web voltados justamente para ter um local que centralize o projeto bem como ofereça recursos administrativos e colaborativos. Esses serviços possuem contas free etc...

    O objetivo desse capítulo é apresentar os serviços web para repositórios Git, descrever suas principais características, indicar como criar e configurar uma conta ligada a um repositório local. Além disso, o workflow básico que considera servições web será descrito, enfatizando as funcinalides desses serviçõs voltados à colaboração.

    GitHub

    O GitHub é um serviço Web para hospedagem, gestão e compartilhamento de repositórios Git que oferece recursos para desenvolvimento e colaboração. A principal slogam do GitHub é: "Build software better, together." que justamente enfatiza o compromisso principal que é dar suporte ao desenvolvimento colaborativo.

    O GitHub foi fundado em 8 de Fevereiro de 2008, em São Francisco, por quatro pessoas: Tom Preston-Werner, Chris Wanstrath, PJ Hyett e Scott Chacon. Antes de terminar 2015, o GitHub já ultrapassou a marca de 10 milhões de usuários. De acordo com o http://githut.info/, no quarto trimestre de 2014 haviam 22 milhões de repositórios. A linguagem JavaScript teve o maior número de repositórios ativos (>320 mil) e total de pushes enquanto que a linguagem R foi a com maior número de novas cópias por repositório (6.45).

    Diferente da forma tradicional de usar o Git, por linha de comando, que fizemos até agora, o GitHub é um serviço web com interface gráfica repleta de funções para o desenvolvimento e acompanhamento de um projeto Git. Tais recursos vão desde administrar tarefas até a permitir a colaboração de outras pessoas, até mesmo desconhecidos. Dentre os principais recursos disponíveis, tem-se:

    • README: é um arquivo texto escrito em liguagem de marcação (Markdown, RST, Textile, Org, etc) que é renderizada para exibição. O README é a capa do seu repositório, ou seja, o conteúdo apresentado na home do projeto e serve para informar o visitante dos objetivos do repositório, seus desenvolvedores e pode conter instruções de instalação e colaboração.
    • Wiki: a Wiki de cada repositório serve para divulgação e documentação. Também é escrita em linguagem de marcação, tornando fácil e rápido a escrita pelo desenvolvedor e simples a leitura e a navegação pelo visitante. Como a Wiki é também um repositório Git, ela pode inclusive ser editada por meios dos recursos de edição do prórpio GitHub, além de versionada, claro. Com isso, não diferente do restante, a edição da Wiki também é colaborativa.
    • Issues: Por issues é que se faz a correção de bugs e agendamento de tarefas. Usuários criam issues para notificar um bug encontrado de forma que ele possa ser rapidamente corrigido. Criar issues também serve como ferramenta de admistração de tarefas nas quais os issues descrevem algo a ser feito e por quem.
    • Milestones: são pedras de milha, ou seja, marcam um ponto a ser alcançado. No GitHub, são usadas para descrever o que precisa ser desenvolvido para que ocorra uma mundança de versão e estabalecer um prazo para conclusão, por exemplo.
    • Pull request ou merge request (MR): é uma requisição de fusão. Os membros da equipe fazem suas contribuições em ramos de desenvolvimento e ao concluir pedem um MR pela interface. O responsável por avaliar o MR pode ver os diffs nos arquivos e fazer o merge direto pela interfaçe, de dentro do serviço sem precisar baixar o ramo, aplicar o merge e subí-lo.
    • Fork: é uma forma de se fazer uma cópia do projeto de alguém para livremente experimentar modificações sem afetar o projeto original. A cópia vem para a sua conta e funciona como qualquer outro repositório seu. A ideia do fork é dar liberdade de contribuição (não supervisionada) a qualquer pessoa interessada de modo que esta possa submeter as contribuições para a origem (por MR) ou até mesmo usar como ponto de partida para um projeto.

    De acordo com Klint Finley, fork e MR são o que tornam o GitHub tão poderoso. Quando o mantenedor recebe um MR ele pode ver o perfil do contribuidor onde estão listados todos os projetos no qual este deu contribuição. Ao aceitar o MR, é acrescentado mais uma colaboração a reputação do colaborador. Esse mecanísmo, então, beneficia as duas partes.

    Além dessas características chaves, o GitHub permite que você acompanhe (watch) e favorite (star) repositórios. Também dá para seguir pessoas e participar de organizações (grupo de usuários) que podem ter repositórios próprios, ideal para projetos em equipe. O perfil de cada usuário registra suas atividades e dentro de cada projeto pode-se acompanhar as contribuições de cada colaborador. Em cada repositório pode-se navegar pelo histórico de commits, filtrar por colaborador, ver as modificações no código (diffs) comaprando commits e branches.

    O GitHub não hospeda apenas código fonte mas sim todo e qualquer arquivo que você tenha sob versionamento. É possível hospedar dados, por exemplo, em formato texto (csv), e disponibilizá-los por meio da URL para download ou leitura direta. Para nós que somos usuários de R, essa é uma característica que permite não só disponibilizar dados, mas também coleções de funções que podem ser carregadas com um source().

    Com o plano free do GitHub, você pode ter inúmeros repositórios públicos e inúmeros colaboradores, pode ter o fork de quantos repositórios quiser e participar de quantas organizações precisar. Para ter repositórios privados, o plano mais básico custa U$ 7 e dá direito a 5 repositórios. Existem outros planos individuais, e também planos organizacionais, para todos os tamanhos de projeto e equipe. Além dessas formas, pode-se ter o GitHub em um servidor próprio, o GitHub Interprise, que tem vantagens além das já mencionadas, no entanto, tal como qualquer plano privado, tem seu custo.

    É uma fonte de conhecimento onde você encontra scripts nas mais diferentes linguagens de programação. Você pode livremente estudar o código dos repositórios, ver como o código evoluiu commit após commit e como um bug foi resolvido. Qualquer pessoa, mesmo sem perfil no GitHub, pode clonar um repositório público. O GitHub reconhece 382 linguagens que compreendem as de programação (293: C++, Python, R, JavaScript), as de markup (34: HTML, TeX, MarkDown), as de dados (40: JSON, SQL, XML, csv) e aplica os realces (highlights) que facilitam a leitura do código.

    O GitHub é o serviço web para Git mais popular quanto ao número de projetos hospedados. No entanto, existem serviços com as mesmas e até com funcionalidades que o GiHub não oferece no plano básico. O GitLab e o Bitbucket estão entre os 5 mais populares e permitem, por exemplo, ter alguns repositórios privados com a conta free.

    GitLab

    http://slides.com/axil/what-is-gitlab#/ https://en.wikipedia.org/wiki/GitLab https://about.gitlab.com/2015/05/18/simple-words-for-a-gitlab-newbie/ https://about.gitlab.com/better-than-github/ https://www.upwork.com/hiring/development/gitlab-vs-github-how-are-they-different/ https://git-scm.com/book/en/v2/Git-on-the-Server-GitLab https://www.safaribooksonline.com/library/view/gitlab-repository-management/9781783281794/pr05.html http://info.eps.surrey.ac.uk/IT/FAQ/gitlab-faq.php https://books.google.com.br/books?id=tUYiAgAAQBAJ&source=gbs_navlinks_s http://events.linuxfoundation.org/sites/events/files/slides/gitlab-linuxcon-presentation.pdf

    Pode ser instalado em servidores propríos. Talvez seja o único nessa categoria.

    Mascot é raccoon: guaxinim

    Outros

    http://www.git-tower.com/blog/git-hosting-services-compared/

    Criar um perfil

    Ilustrar o simples processo de criar um perfil. Explorar um pouco das interfaces. Terminar com o campo das chaves públicas para então fazer uso na seção seguinte.

    Criar uma conta no Github é muito simples. Basta entrar em https://github.com/join, preencher os dados pessoais, escolher um plano (free/público, pago/privado) e fazer um tour pela interface. Como não existe segredo em preencher os dados pessoais, vamos fazer uma breve descrição da interface do GitHub.

    Habilitar comunição

    http://www.vogella.com/tutorials/GitHosting/article.html

    Geração e configuração das chaves públicas. Incluir screenshots.

    Generciar repositórios

    No canto superior direito da página tem um ícone + que permite criar um novo repositório ou uma nova organização. Escolha um nome para representar o seu repositório e adicione uma breve descrição à ele. Na etapa seginte, defina o nível de visibilidade: publico ou privado. Lembre-se que repositórios privados só podem ser criados para planos não free.

    Ao criar o repositório você pode inicilizado criando um arquivo README.md. Como já mencionamos, esse arquivo é a capa do seu repositório e serve para documentar o objetivo. Você pode editar esse arquivo, ou qualquer outro, de dentro do GitHub e, claro, commitar as alterações que fizer. Depois de criado, é possível clonar o repositório pelo endereço que é composto pelo seu nome de usuário e nome do repositório. O repositório ola-mundo da conta do fulano pode ser clonado com

    git clone git@github.com:fulano/ola-mundo.git

    Criar, renomear, deletar. Públicos e privados. Adicionar README.

    Fluxo de trabalho

    https://www.atlassian.com/git/

    clone, add, commit, branch, push, fetch, pull.

    Macanísmos de colaboração

    Fork

    https://help.github.com/articles/fork-a-repo/ https://confluence.atlassian.com/bitbucket/forking-a-repository-221449527.html

    É uma cópia livre e independente que você pode usar para acrescentar/corrigir o projeto origem ou usar como ponto de partida para outro projeto.

    Você não precisa ser colaborador do projeto para dar fork, basta estar na mesma plataforma. Você pode submeter a sua colaboração para o dono por meio de Merge Request.

    Mostrar um pull request que acrescenta pgf e pgs como renderização Tex. https://github.com/github/linguist/blob/master/lib/linguist/languages.yml

    Issues

    Correções e aperfeiçoamento.

    Merge Request

    Funciona para branches e forks.

    Integração contínua

    Permite chegar se o projeto, no caso de softwares, está funcionando/instalando sem erros.