Agosto de 2016
Volume 31, Número 8
DevOps - Confirmar para o Git: Controle do código-fonte no Visual Studio 2015
Por Jonathan Waldman | Agosto de 2016
Desde as suas versões 2013, o Visual Studio e o Team Foundation Server dão suporte imediato ao Git, o sistema popular de gerenciamento de código-fonte que ultrapassou várias opções tradicionais. Para complementar essa opção de código-fonte, a Microsoft adicionou ferramentas de front-end cheias de recursos ao Git para Visual Studio. Mas como acessar e aproveitar essas ferramentas?
Neste artigo, vou falar sobre como o Git se diferencia da tecnologia de controle de código-fonte que está associada ao TFS (Team Foundation Server), antigamente chamado de TFVC (Controle de Versão do Team Foundation). Em seguida, vou falar sobre como configurar o Git; como criar, se conectar e trabalhar com um repositório local, incluindo como preparar e confirmar alterações; como gerenciar ramificações, incluindo mesclagem e exibição de histórico e como se conectar a diferentes tipos de repositórios remotos, incluindo como sincronizar alterações.
Criei as figuras deste artigo com a edição do Visual Studio 2015 Atualização 2 Enterprise, mas os itens debatidos aqui estão disponíveis em todas as outras versões do Visual Studio 2015, incluindo as edições Community e Express. Para poupar espaço, criei figuras que às vezes contêm mais de uma imagem de tela e deixei isso claro no texto. Também usei marcadores numerados para direcionar sua atenção aos itens na figura. Quando eu me referir a uma figura, a menção normalmente será apenas aos marcadores. Por exemplo, na frase, “Confira a Figura 1, Marcador 1 e veja o Marcador 2”, estou dizendo que o Marcador 2 está na Figura 1.
Figura 1 - O painel Home da janela do Team Explorer (Offline)
Visão geral
Se você usa o Visual Studio há alguns anos, deve achar que o TFVC é a escolha certa para desenvolver soluções em um ambiente de equipe. Normalmente é o caso, especialmente se seus projetos já estão usando TFVC ou precisam armazenar arquivos muito grandes, se contêm uma grande quantidade de arquivos (além do que qualquer um poderia transmitir adequadamente por uma rede) ou se precisa bloquear arquivos por controle de código-fonte. No entanto, já que os desenvolvedores muitas vezes trabalham de locais remotos diferentes em um projeto colaborativo de software, equipes de desenvolvimento mais recentes têm ido ao Git porque é um sistema de controle de versão descentralizado com apelo amplo e de plataforma cruzada que permite a você trabalhar produtivamente offline enquanto confirma ou desfaz alterações, gerencia ramificações e acessa o histórico. O melhor de tudo é que quando você está pronto, pode ficar online, conectar-se ao mesmo repositório remoto que está sendo atualizado pelo resto da equipe e sincronizar suas alterações offline usando vários métodos.
O IDE do Visual Studio 2015 usa a API LibGit2 e a camada de comunicação LibGit2Sharp para implementar todos os recursos do Git expostos nas ferramentas de front-end. LibGit2 é um mecanismo principal de Git de software livre e plataforma cruzada com zero dependência escrito totalmente em C. LibGit2Sharp é uma biblioteca escrita em C# que é executada como um processo gerenciado no Microsoft .NET Framework. Ela serve como uma interface boa para .NET entre o Visual Studio e o LibGit2 e simplifica drasticamente os esforços de programação exigidos pela equipe de desenvolvimento do Visual Studio para estabelecer um pipeline de comunicação com a biblioteca LibGit2. LibGit2Sharp também está disponível, o que significa que você pode usar sua linguagem .NET favorita para escrever suas próprias ferramentas e utilitários do Git. Veja mais detalhes sobre LibGit2 e LibGit2Sharp em libgit2.github.com.
No Visual Studio, o Team Explorer é o principal condutor da interface gráfica de usuário por onde você interage com o LibGit2, o mecanismo Git subjacente. Para abri-lo, selecione o item de menu View | Team Explorer ou digite Ctrl+\ seguido de Ctrl+M. Ao longo da parte superior da janela do Team Explorer há uma barra de ferramentas que contém botões de navegação Back/Forward, seguidos dos botões branco Home, verde Connect e azul Refresh. Clique no botão Home e veja uma janela semelhante à mostrada na Figura 1.
Abaixo da barra de ferramentas está o rótulo “Home” (Marcador 1). O rótulo tem uma seta para baixo branca ao lado de (Marcador 2) indicando que está conectada a um menu suspenso. Clique em qualquer lugar do rótulo para exibir o menu (Marcador 4). Tanto a barra de ferramentas do Team Explorer quanto seu menu de contexto permitem a você alternar convenientemente entre os vários painéis do Team Explorer. É um tipo diferente de metáfora de diálogo com guias: O tipo de painel que você está exibindo atualmente (neste caso, Home) aparece tanto no rótulo do painel (Marcador 1) como na legenda da barra-título do Team Explorer (Marcador 3).
Configurando o Git
Antes de usar o Git no Visual Studio, defina suas configurações globais. Para isso, navegue até o painel Home do Team Explorer. A seção Project contém uma série de botões para exibir cargas pendentes, gerenciar ramificações e sincronizar com repositórios remotos (Figura 1, Marcador 5). Clique em Configurações para abrir o painel Configurações e clique em Configurações Globais na seção Git. Isso abrirá o painel Configurações do Git (Figura 2, Marcador 1). As configurações globais não estão vinculadas a um repositório Git específico, apenas fornecem valores padrão para novos repositórios que você cria (é possível substituir esses valores padrão posteriormente com base em cada repositório). Especifique seu nome de usuário (deve ser seu nome completo, permitidos espaços), seu endereço de email e a localização do repositório, que é a pasta padrão em que você quer que os repositórios Git recém-criados sejam armazenados pelo Visual Studio (Marcador 2).
Figura 2 - Painel de Configurações do Git do Team Explorer
Especifique também se quer associar imagens de autor do Gravatar ou do TFS às atividades do Git. Se selecionar Gravatar, tenha em mente que esse recurso funciona enviando o endereço de email associado a cada confirmação de Git ao Gravatar como uma chave de pesquisa. O Gravatar retorna uma imagem associada ao endereço de email. No fim das contas, esse recurso aparentemente inofensivo compartilha informações de contato de todos da sua equipe com uma entidade terceira, algo que é sempre bom evitar. Finalmente, selecione se deseja confirmar alterações depois de uma mesclagem como padrão (Marcador 3). Se fizer alguma alteração a esses campos, clique em Update para salvá-las (Marcador 4).
Em uma seção separada do painel, você pode definir qual ferramenta de comparação e de mesclagem deseja usar. Atualmente, esses valores usam as próprias ferramentas do Visual Studio como padrão. Se quiser personalizar essas escolhas, talvez precise editar manualmente o arquivo de configuração em que essa janela grava. O arquivo é .gitconfig e fica na pasta homepath.
Trabalhando com um repositório local
Ao trabalhar em seus projetos como único desenvolvedor e tendo decidido colocar seu código com controle de origem, você poderá começar a trabalhar offline com um repositório Git local e escalar verticalmente para um repositório remoto conectado mais tarde, se for o caso.
Para criar um repositório vazio, vá para o painel Conectar do Team Explorer (Figura 3, Marcador 1) e clique em Novo em Repositórios Git Locais (Marcador 2; Novo está cinza porque já cliquei nele). Insira um caminho local e o nome do repositório, como o caminho de origem padrão seguido de \MyNewestRepo (Marcador 3) e clique em Create (Marcador 4). Isso cria uma pasta chamada MyNewestRepo (é o seu diretório de trabalho) que contém uma pasta .git com dois arquivos, .gitignore e .gitattributes. Estou mostrando essa pasta na imagem da tela, mas .git é uma pasta oculta: Ela contém efetivamente o repositório Git (o banco de dados de backup e os arquivos de manutenção do Git) e normalmente não deve ser mexida. Mas como ela contém todo o seu repositório Git, convém fazer backup e, portanto, é importante saber que ela existe. O arquivo .gitattributes especifica como o Git deve lidar com as finalizações de linha e quais programas deve inicializar quando comparar um arquivo com o repositório atual. O .gitignore especifica que o Git não deve controlar arquivos com determinadas extensões ou em determinadas pastas (por padrão, ficam especificadas as extensões de arquivo .suo, .user, .pdb e .tmp e de todos os arquivos nas pastas depurar e versão). Adicione tantas extensões de arquivo e pastas quantas forem necessárias para manter seu repositório Git o menor possível.
Figura 3 - Painel Conectar do Team Explorer
Depois de criar um novo repositório, você o verá na seção Repositórios Git Locais. Clique duas vezes em algum repositório que esteja na lista (Figura 3, Marcador 6) para se conectar a ele. Isso realça o repositório com uma fonte em negrito antes de levar você ao painel Home, o que confirma que você se conectou ao repositório selecionado com sucesso. (Figura 4, Marcador 2).
Figura 4 - Painel Home do Team Explorer, conectado a um repositório
Se você clicar em Configurações agora, verá que tem acesso a configurações específicas do repositório. Acesse essas configurações se quiser substituir os valores vindos das configurações globais do Git. Por exemplo, é normal personalizar o endereço de email do repositório atual se você está trabalhando em um projeto para determinado cliente e quer usar um endereço de email específico do trabalho. Além disso, você pode clicar em links fornecidos para editar diretamente os arquivos .gitignore e .gitattribute, especificar as ferramentas de comparação e mesclagem a usar, adicionar remotos e exibir outros atributos relativos ao repositório atual.
Lembre-se de que o diretório de trabalho do Git é a pasta pai que contém o diretório .git. Depois de criar e configurar o repositório vazio, adicione arquivos primeiro adicionando arquivos ao diretório de trabalho. O Git verá os arquivos, mas não os incorporará ao repositório Git até você os ter preparado e confirmado. Sabendo disso, basta usar o diretório de trabalho como quiser e entrar em um fluxo de trabalho de confirmação no Git quando estiver pronto.
Começar com um repositório vazio e adicionar arquivos é uma opção, mas você também pode começar com arquivos de solução. Para criar uma nova solução com um repositório Git, selecione o item de menu Arquivo | Novo Projeto. Você verá o diálogo Novo Projeto que inclui uma caixa de seleção “Criar novo repositório Git”. Se estiver marcada, o Visual Studio criará uma nova solução e um novo repositório Git, além dos dois arquivos de configuração .gitattributes e .gitignore, no diretório de trabalho do novo projeto. Como alternativa, se você tiver uma solução existente e quiser colocá-la sob controle de código-fonte do Git, abra a solução e selecione o item de menu do Arquivo do Visual Studio | Adicionar ao Controle do Código-fonte. Ambos os procedimentos criam um novo repositório Git com arquivos de configuração .gitattributes e .gitignore.
Sempre que você abrir uma solução sob controle de código-fonte do Git, o Visual Studio se conectará ao repositório automaticamente na pasta de trabalho da solução. Da mesma forma, sempre que você usar o painel Conectar do Team Explorer para se conectar a um repositório existente, o Visual Studio examinará dinamicamente todas as pastas no diretório de trabalho do repositório procurando arquivos .sln e os listará na seção Soluções do painel Home. Por exemplo, se você se conectar ao repositório MyNewestRepo, verá uma lista de soluções parecida com a imagem do balão mostrado na Figura 4, Marcador 4. Quando o Visual Studio identificar as soluções associadas a um repositório, clique duas vezes em uma entrada se quiser abrir a solução no IDE.
Fazendo mudanças
Ao usar o Visual Studio para abrir uma solução sob controle de código-fonte do Git, o Gerenciador de Soluções exibirá ícones informativos ao lado dos itens no controle de modo de exibição em árvore. Os ícones indicam o estado dos itens no diretório de trabalho comparado com itens que existem no repositório Git ao qual você está conectado no momento. Por exemplo, na Figura 5, você pode ver um ícone de cadeado azul ao lado dos itens marcados (Marcador 1), uma marca de seleção ao lado dos itens alterados (Marcador 2) e um sinal de adição verde ao lado dos itens adicionados (Marcador 3). Se você encontrar um ícone que não reconhece, passe o mouse diretamente sobre ele para ver uma dica de ferramenta que irá ajudá-lo. Embora esses ícones costumem ser precisos, se você fizer mudanças nos itens fora do IDE do Visual Studio, talvez tenha que clicar no botão da barra de ferramentas Atualizar do Gerenciador de Soluções para atualizar a exibição.
Figura 5 - Gerenciador de Soluções com ícones indicando os estados de controle de código-fonte
Depois de trabalhar com itens na sua solução, talvez você queira prepará-los e confirmar as mudanças para o repositório Git, ou até mesmo desfazer algumas mudanças. Para começar a gerenciar as mudanças feitas, navegue até Team Explorer | Home | Alterações. No painel Alterações (Figura 6, Marcador 1), você verá todas as mudanças detectadas (Marcador 2). Clique no ícone de adição (Marcador 12) para preparar todos os itens alterados ou no ícone de subtração para não prepará-los (Marcador 13). Você também pode arrastar e soltar itens entre as seções Alterações (Marcador 2) e Alterações Preparadas (Marcador 3).
Figura 6 - Painel Alterações do Team Explorer
Clique com o botão direito do mouse em um item alterado para ver um menu que permite a você abrir o arquivo, exibir seu histórico, compará-lo com a versão não modificada, abrir o arquivo de origem e mostrar um painel de anotações informativas ao lado dele, preparar e desfazer as alterações (Marcador 14). Se quiser comparar uma alteração com uma versão não alterada do arquivo, clique duas vezes em um item alterado para iniciar uma janela de comparação (Figura 7). A janela de comparação tem dois painéis: O painel esquerdo mostra a versão não modificada no repositório Git local e o direito mostra a versão do diretório de trabalho. A borda mais à direita mostra visualmente onde estão as diferenças entre os arquivos (Marcador 1) — vermelho indica uma remoção e verde indica uma adição. Os painéis mostram um realce em vermelho sobre toda a linha de código em que algo foi removido (Marcador 2) e um realce em verde sobre toda a linha de código em que algo foi adicionado (Marcador 3). A ferramenta de comparação desenha uma caixa vermelha ou verde na linha em torno do texto removido ou adicionado, respectivamente. Além disso, menus suspensos estão nas laterais da parte superior de cada painel (Marcador 4) — eles permitem a você navegar rapidamente até seções de código.
Figura 7 - Ferramenta de comparação padrão do Visual Studio
Quando estiver pronto para confirmar as alterações, adicione uma mensagem de confirmação (Figura 6, Marcador 4), e clique no botão de Confirmação de modo múltiplo (Marcador 5). Esse botão de modo múltiplo tem como ação padrão Confirmar Preparo, mas também pode enviar por push e sincronizar (isso só faz sentido no contexto de estar conectado a um repositório remoto). Quando a operação de confirmação é bem-sucedida, o Team Explorer relata a ID de confirmação (Marcador 15).
Observe que o painel de Alterações informa que está trabalhando com uma ramificação local chamada unit_test_project (Figura 6, Marcador 6). A barra de status do Visual Studio também relata em que ramificação você está trabalhando (Marcador 10) e exibe outras informações úteis em tempo real relativas ao repositório Git atual. Por exemplo, ela mostra a quantidade de mudanças não publicadas, ou seja, quantas mudanças ainda não foram enviadas por push a um repositório remoto (Marcador 7), a quantidade de mudanças preparadas (Marcador 8), o nome do repositório atual (Marcador 9) e o nome da ramificação atual (Marcador 10). Além disso,as seções de barra de status atuam como botões. Por exemplo, se você clicar no repositório atual, o Visual Studio abrirá o painel Conectar do Team Explorer, mostrando detalhes sobre o repositório atual. Se você clicar na ramificação atual, um menu pop-up oferecerá opções de ramificação.
Como em qualquer sistema de controle de código-fonte, ao confirmar alterações no repositório, você estará adicionando-as ao histórico de confirmação do repositório. Essas entradas no histórico incluem o nome de usuário e endereço de email fornecido nas configurações do Git, para que todos que tenham acesso aos dados de histórico possam ver quem fez “o que” e “quando”. E não só isso, quando você envia suas alterações locais por push a um repositório remoto, o histórico vai com elas. Quando outros membros da equipe sincronizam o repositório local com o remoto, eles são capazes de ver o histórico gerado pelas suas alterações.
Gerenciando ramificações
O Visual Studio dá suporte a recursos de ramificação do Git básicos e avançados. Quando você quiser gerenciar ramificações, abra o painel Ramificações navegando até Team Explorer | Home | Ramificações (Figura 8, Marcador 1). Na parte superior, você verá links rápidos para mesclar, trocar base e realizar outras ações (Marcador 2). Embaixo, você verá uma seção chamada Repositórios Git Ativos (Marcador 3) e uma lista de ramificações contidas em cada um. A ramificação atual está em negrito (Marcador 4). Para alternar para outra ramificação, clique duas vezes nela. O Visual Studio faz check-out na ramificação selecionada.
Figura 8 - Painel Ramificações do Team Explorer
Clique com o botão direito do mouse em uma ramificação para ver um menu de ações disponíveis (Marcador 5). Você pode fazer check-out na ramificação selecionada, criar uma nova ramificação local de uma ramificação local existente na ramificação selecionada, trocar a base da ramificação local selecionada por outra ramificação local existente, realizar uma redefinição grave ou misturada na ramificação selecionada, escolher a ramificação selecionada a dedo ou excluir a ramificação atual. Se escolher mesclar, o Visual Studio dará suporte total à detecção de conflitos de mesclagem e apresentará um editor de conflitos que você pode usar para resolvê-los manualmente.
Você também pode exibir o histórico de ramificações listadas e, da exibição do histórico, pode clicar com o botão direito do mouse em uma entrada para exibir um menu que lhe permite ver detalhes de confirmação, criar novas ramificações, criar marcas, reverter, redefinir, escolher a dedo e navegar até ramificações pai/filho. A exibição de histórico mostra a ID de confirmação, o autor, a data e a mensagem de confirmação.
Conectando-se a um repositório remoto
Até agora, mantive a discussão no nível de trabalho offline com repositório Git local. Você não precisa de mais nada além de um repositório local se está trabalhando por conta própria e tem uma maneira confiável de fazer o backup da pasta .git do diretório de trabalho. No entanto, quando você quer trabalhar com outros desenvolvedores em um projeto de equipe ou usar um serviço hospedado como backup, precisa se conectar a um repositório remoto.
Se você quiser ter controle total sobre seu repositório ou se não estiver confortável com a ideia de colocar o código do próximo melhor aplicativo do mundo em um servidor hospedado, considere hospedar seu repositório usando um compartilhamento de arquivos em sua própria rede. Em seguida, você pode aumentar a confiabilidade e as velocidades de transferência de arquivos de e para o repositório instalando um servidor Git baseado em Windows, como o Bonobo Git Server (bonobogitserver.com), que é gratuito, ou o GitStack (gitstack.com), que é gratuito para até dois usuários. Depois disso, você pode baixar e instalar o Visual Studio Team Foundation Server Express 2015 em um servidor localizado na sua rede e dar suporte a até cinco usuários nomeados gratuitamente ou, se você ou alguém na sua equipe tem uma licença MSDN ativa, pode baixar e instalar a versão completa do Visual Studio Team Foundation Server 2015 em seu próprio servidor e mantê-lo lá eternamente dando suporte a até cinco usuários nomeados gratuitamente. Por fim, você pode comprar e instalar o Visual Studio Team Foundation Server 2015 com as CALs (licenças de acesso para cliente) necessárias para sua equipe.
Se você quiser e puder usar um serviço de hospedagem do Git não local, suas opções são maiores e incluem o Visual Studio Team Services (anteriormente chamado de Visual Studio Online) e opções populares, como o GitHub, o BitBucket e o GitLab. As opções de hospedagem gratuitas sempre têm algumas restrições. O site wiki do Git (bit.ly/1Oym3F9) tenta se manter atualizado com as várias opções de hospedagem e recursos do Git.
Para mostrar como se conectar a repositórios remotos e clone que eles hospedam, clone um repositório hospedado em outro lugar da sua rede. Em seguida, conecte-se e clone um repositório do Visual Studio Team Services hospedado na Web. Por fim, vou mostrar como se conectar e clonar um repositório hospedado pelo GitHub para um projeto famoso.
Para gerenciar remotos, navegue até Team Explorer | Home | Conectar (Figura 9, Marcador 1). O painel Conectar exibe um menu de link Gerenciar Conexões azul embaixo do menu do painel (Marcador 2), seguido de uma seção contendo uma lista vertical de Fornecedores de Serviço Hospedado (as janelas individuais do Visual Studio Team Services e GitHub são chamadas de Convites de Serviço).
Figura 9 - Opções de provedor de serviços do painel Conectar do Team Explorer
Se você fechar um convite de serviço (clicando no X, indicado pelo Marcador 3), não conseguirá voltar se não modificar o registro. Se isso acontecer, você poderá acessar o serviço usando o menu suspenso Gerenciar Conexões (Marcador 4). Outras informações no painel Conectar do Team Explorer também ficam armazenadas no registro, como as informações do repositório Git usado recentemente. Se quer inspecionar a chave de registro, ela está em HKCU\Software\Microsoft\VisualStudio\14.0\TeamFoundation (preste atenção às ramificações GitSourceControl e TeamExplorer abaixo disso).
Lembre-se de que o motivo de poder trabalhar offline de forma tão produtiva com um repositório Git é que quando você clona um repositório local, obtém todo o histórico do repositório, o que inclui os detalhes de cada operação de confirmação, ramificação e mesclagem. Ao voltar a ficar online, o Git determina como seu repositório local mudou em comparação com o repositório remoto, e isso é importante quando se trata de realizar operações de busca, pull, envio por push e sincronização com êxito.
Para clonar um repositório de um compartilhamento de rede local, vá para a seção Repositórios Git Locais e clique no link Clonar. Você será solicitado a “Inserir URL de um repositório Git a clonar”, mas o processo, na verdade, é mais tranquilo. Você também pode digitar um caminho válido para localidade na sua estação de trabalho atual (como c:\Repos\FinancialWizardApp), um caminho UNC para um compartilhamento de rede (\\1.2.3.4\Repos\FinancialWizardApp) ou um caminho controlado por mapa (\\computername\Repos\FinancialWizardApp). Verifique se há uma pasta .git no local especificado e que o Visual Studio pode lê-la.
Na Figura 10 (Marcador 1), digitei uma letra controlada por mapa para me referir ao local na minha rede que contém o repositório remoto, e outros desenvolvedores que trabalhem na minha rede podem fazer o mesmo. Depois de dar a localização do repositório remoto, especifique o caminho local para o repositório clonado (Marcador 2). Em seguida, decida se quer clonar submódulos recursivamente e clique em Clonar.
Figura 10 - Trabalhando com vários locais de repositório remoto
É importante observar que quando você se conecta a um repositório remoto em um servidor de arquivo, não poderá emitir solicitações pull. Esse recurso exige um servidor Git (como o Team Foundation Server ou o GitHub). No entanto, você pode criar, mesclar e gerenciar ramificações e exibir históricos e alterações de sincronização (por meio de busca, pull e push).
Quando quiser clonar um repositório do Visual Studio Team Services, entre em um Team Foundation Server. Para começar, selecione o item de menu Visual Studio Team | Gerenciar ou vá para o painel Conectar do Team Explorer e clique em Gerenciar Conexões. Em seguida, escolha Conectar ao Team Project. Um diálogo Conexão ao Team Foundation Server será exibido. Clique em Servidores e verá um diálogo como o mostrado na Figura 10, Marcador 4. Observe que você pode usar esse diálogo para se conectar a qualquer Team Foundation Server disponível, mas se quer se conectar a uma conta do Visual Studio Team Services, insira a URL relevante. Ao clicar em OK, você precisará entrar. Depois disso, seu servidor será listado e você poderá fechar o diálogo. Você verá um diálogo mostrando dois painéis: o painel esquerdo exibe as suas coleções do Team Project e o painel direito exibe os Projetos de Equipe na coleção. Marque a caixa de seleção ao lado dos projetos de equipe que deseja exibir no Visual Studio e clique em Conectar. Vá para o painel Conectar do Team Explorer e verá seus repositórios listados (Figura 10, Marcador 3).
Embora o GitHub só ofereça o Git como VCS (sistema de controle de versão), o Visual Studio Team Services oferece Git descentralizado por padrão e TFVC centralizado como alternativa. Esses dois sistemas funcionam de maneira bem diferente e exigem ferramentas de IDE diferentes. Felizmente, a janela do Team Explorer foi projetada especificamente para reconhecer e lidar com ambos os tipos de VCS. Na verdade, ao se conectar com seu servidor do Visual Studio Team Services e adicionar projetos, o Team Explorer mostra quais projetos estão com controle de versão do Git usando um ícone vermelho do Git (Figura 10, Marcador 3). Projetos sem o ícone do Git estão com controle de versão do TFS.
Portanto, para clonar um repositório remoto do Visual Studio Team Services, ele deverá ser um repositório Git. Você pode clicar com o botão direito do mouse na lista e escolher Clonar. Escolhi clonar o projeto GitProject, que me levou à seção Repositórios Git Locais com as informações sobre o repositório remoto preenchidas, além de um caminho de repositório local padrão (Figura 10, Marcador 5). Depois de clonado, o repositório aparece na lista Repositórios Git Locais. Clique duas vezes para abri-lo e você será levado até o painel Home do Team Explorer. Lá, você verá botões projetados para funcionar com repositórios Visual Studio Team Services, como Solicitações Pull, Itens de Trabalho e Compilações.
O processo de clonar um repositório remoto é bem semelhante se for feito a partir do GitHub. Se você tiver um repositório privado hospedado no GitHub, precisará entrar na sua conta do GitHub para cloná-lo. Do contrário, você pode clonar repositórios públicos imediatamente, sem ter uma conta.
No geral, você pode clonar um repositório remoto se ele estiver em um compartilhamento de rede ou disponível em um servidor HTTP/HTTPS. No momento, o Visual Studio não dá suporte a protocolo SSH para se comunicar com repositórios Git remotos.
Trabalhando com repositórios remotos
Depois de se conectar a um repositório remoto, volte para Team Explorer | Home | Configurações e clique no link Configurações do Repositório. Lá, você poderá exibir informações sobre os remotos a que seu repositório atual está conectado (isso é muito útil quando você está trabalhando com mais de um remoto). Voltando ao painel Configurações, você também verá novos links se estiver conectado a um serviço como o Team Foundation Server ou o GitHub. Esses links permitem a você configurar segurança, associação a grupos, configurações do portal e muito mais para o serviço.
No painel Team Explorer | Home, você verá novos botões referentes às opções oferecidas pelo serviço remoto. Se você estiver conectado a um repositório remoto hospedado pelo Visual Studio Team Services, verá botões de Solicitações Pull, Itens de Trabalho e Compilações. Ao clicar em Sincronizar, você irá para o painel Sincronização do Team Explorer, onde poderá optar pelas operações de sincronização, busca, pull, publicar e enviar por push. Se existirem conflitos de mesclagem que não podem ser resolvidos automaticamente, o Visual Studio apresentará a Ferramenta de Mesclagem selecionada para que você possa escolher manualmente como resolvê-los.
Para finalizar, vou clonar o projeto TypeScript 3 de software livre da Microsoft, localizado em bit.ly/1o2weYt. Como esse é um repositório público do Git, posso cloná-lo diretamente usando o link Clonar da seção Repositórios Git Locais (Figura 10, Marcador 6). No momento em que este artigo estava sendo escrito, esse repositório tinha 350 MB e, portanto, contém muitos históricos e ramificações e pode demorar um pouco para baixar.
Quando o repositório local tiver sido totalmente baixado, você o verá listado na seção Repositórios Git Locais. Se clicar duas vezes nele, ele abrirá no painel Home do Team Explorer (Figura 10, Marcador 7). Na seção Projeto, você verá botões projetados para funcionar com repositórios GitHub, como Solicitações Pull, Sincronização, Pulso e Gráficos. Alguns desses botões levarão você ao site do GitHub para concluir a ação selecionada.
Ao clicar em Ramificações, você será levado até o painel Ramificações do Team Explorer. Lá, você verá a ramificação mestre. Se clicar com o botão direito do mouse nela, você verá o histórico de todo o projeto, desde a confirmação inicial em 7 de julho de 2014 até a data atual. A janela de exibição de histórico permite a você visualizar os dados usando várias apresentações diferentes, dependendo das opções escolhidas na barra de ferramentas da janela (Figura 11, Marcador 1). A exibição que escolhi mostrar é chamada de Exibição Detalhada. Ela mostra um gráfico de ramificações (Marcador 2)— as confirmações de mesclagem estão em cinza (Marcador 3) e as confirmações que não são mesclagem estão em azul (Marcador 4)— incluindo a ID de confirmação, a ID de usuário do autor, a data da confirmação, a mensagem de confirmação e marcas que estejam presentes.
Figura 11 - A exibição do histórico fornece detalhes sobre ramificações, confirmações e mesclagens
Essa exibição facilita a navegação para a ramificação pai ou filha. Selecione uma confirmação e use os botões de navegação Ir para o Filho/Ir para o Pai da barra de ferramentas (terceiro e quarto botões mostrados). Nesses casos, quando uma ramificação termina com uma seta (Marcador 5), clique na confirmação (veja a linha realçada) e a linha conectando pai e filho será desenhada (Marcador 6).
Conclusão
O Visual Studio 2015 dá acesso conveniente de interface gráfica do usuário a vários recursos comuns e avançados do Git e pode fazer isso graças ao mecanismo Git subjacente LibGit2. Embora ofereça suporte quase completo ao Git, existem algumas operações menos comuns, como stashing, que exigem interação com uma interface de linha de comando Git. Como as ferramentas de Git do Visual Studio são tão abrangentes, é possível se proteger da interface de linha de comando Git e conseguir realizar a maioria das tarefas de Git sem muito atrito. Usuários Git avançados ou curiosos, no entanto, vão querer ter acesso ao Git na sua plenitude. Esses usuários podem diminuir a ansiedade inicializando uma janela interativa do PowerShell e interagindo com a interface de linha de comando Git para Windows, que também está incluída no Visual Studio. Com interface gráfica de usuário e opções de linha de comando, o Visual Studio dá acesso satisfatório e imediato ao Git independentemente do seu nível técnico.
Jonathan Waldman é um profissional certificado pela Microsoft especializado em tecnologias da Microsoft e ergonomia de software. Ele trabalha com a pilha de tecnologia da Microsoft desde a sua concepção e teve papéis de destaque em vários projetos institucionais, públicos e privados de alta visibilidade. Waldman é membro da equipe técnica do Pluralsight e criou seu curso de treinamento em vídeo sobre a biblioteca comercial Wijmo de widgets de interface do usuário JQuery aprimorados. Você pode entrar em contato com ele pelo email jonathan.waldman@live.com.
Agradecemos aos seguintes especialistas técnicos pela revisão deste artigo: Jeremy Epling (Microsoft) e Edward Thomson (GitHub)
Jeremy Epling é uma Gerente de programa de entidade de segurança na Microsoft que trabalha no Visual Studio Team Services e na equipe do Team Foundation Server.
Edward Thomson é engenheiro de software no GitHub e autor do Git da O'Reilly Media para treinamento do Visual Studio (www.gitforvisualstudio.com).