Controle de versão de projetos Delphi 7 no TFS
Veja neste post como colocar seus projetos Delphi 7 sob controle de versão no TFS e/ou VSTS.
(Parte 1 de 13 da série sobre controle de projetos legados no TFS)
O panorama do controle de versão sob o TFS mudou muito desde que foi introduzido o suporte a Git. Ter dois modelos tão distintos – o TFVC com a clássica abordagem centralizada e o Git com o novo mundo da descentralização – naturalmente afeta nossas opções, principalmente na hora de suportar tecnologias e IDEs antigos. O Delphi, como é de se esperar, não é exceção.
Assim, este post vai cobrir os dois cenários – uso de TFVC e uso de Git – para projetos Delphi. Comecemos pelo TFVC.
Integração TFVC e Delphi
O Delphi 7 vem de um tempo onde o “rei” dos controles de versão na plataforma Windows era – acredite se quiser! – o Visual SourceSafe.
(E acaba de me ocorrer que boa parte dos devs da Lambda3 deve nunca ter visto o VSS. Definitivamente estou ficando velho)
Isso significa que o IDE do Delphi 7 está otimizado para o SourceSafe e seu modelo centralizado de lock-modify-unlock (ou seja, o bom e velho “check out & check in”). Dessa forma, o TFVC se encaixa como uma luva na experiência de usuário oferecida pelo IDE do Delphi.
Ambiente e pré-requisitos
Para alinharmos as expectativas, é importante você saber como montei meu ambiente. Afinal, YMMV
- Windows 7 Ultimate, SP1, x86, 2GB RAM
- Delphi 7 Enterprise
Agora, vamos falar um pouco sobre os pré-requisitos:
- Team Explorer 2013: Qualquer integração com o TFS passa necessariamente pelo Team Explorer. Você pode baixá-lo do site da Microsoft (instalação gratuita para usuários licenciados de TFS e/ou VSTS). Se você já tem o Visual Studio 2013 instalado (Professional ou superior) então não é preciso instalar o Team Explorer à parte, pois ele já vem incluído com o VS.
- Visual Studio Team Foundation Server MSSCCI Provider: O “MSSCCI Provider” (pronuncia-se “miss-kee”) oferece a integração entre o TFS e IDEs antigos que usam a interface MSSCCI (Microsoft Source Code Control Interface), criada para a integração com o SourceSafe. Em outras palavras, o provedor MSSCCI emula a interface criada para o SourceSafe, “enganando” IDEs antigos e fazendo-os acreditar que estão falando com o SourceSafe.
- EPocalipse SourceConneXion: Plug-in de terceiros (ou seja, $$$ ) que faz a integração entre o Delphi e os provedores MSSCCI.
Essa integração toda se dá como no diagrama abaixo:
Configuração dos plug-ins
Eis o processo de instalação dos diversos componentes necessários para habilitarmos a integração. Instale-os na ordem a seguir:
Team Explorer
Comece a instalação pelo Team Explorer (TE). Você pode usar o TE 2012 ou 2013 mas não o 2015. Em outras palavras: você até pode ter o TE (ou o VS) 2015 instalado na sua máquina, mas não será o bastante. Você ainda precisará instalar o TE (ou VS) 2012 ou 2013, pois o TFS MSSCCI Provider não funciona com o TE 2015.
O Team Explorer pode ser obtido de três maneiras diferentes:
- Através de um download direto do site da Microsoft (2012, 2013);
- Na mídia do Team Foundation Server de versão correspondente (ou seja, TFS 2012 == TE 2012, TFS 2013 == TE 2013);
- Ou por meio da instalação do Visual Studio (Professional ou superior) de versão correspondente. Neste caso basta instalar o VS; o TE estará incluído na instalação.
Não há muito além disto. Escolha um dos três meios acima e depois é só next-next-finish.
1
**DICA**: Depois da instalação do Team Explorer, é sempre uma boa ideia instalar o Update do Visual Studio correspondente à versão do TE que você instalou, pois ele pode conter correções de bugs. Instale o [Update 5](https://www.microsoft.com/en-US/download/details.aspx?id=48708) no TE 2012 ou o [Update 5](https://www.microsoft.com/en-US/download/details.aspx?id=48129) no 2013.
Visual Studio Team Foundation Server MSSCCI Provider
O que deveria ser uma instalação bem simples pode se tornar um processo um pouco confuso. Isso porque há duas versões do TFS MSSCCI Provider disponíveis no Visual Studio Marketplace:
- Visual Studio Team Foundation Server MSSCCI Provider 2010; e
- Visual Studio Team Foundation Server MSSCCI Provider 2013&2015**
A diferença entre ambos é a versão do Team Explorer de que cada um depende. Via de regra, use a versão 2010 se você precisar instalar no Windows XP. Para versões mais recentes do Windows (como no nosso caso, em que estamos usando o Windows 7) use a versão 2013&2015 (que funciona tanto com o TE 2013 quanto com o 2015). Baixe a versão correta e depois é só next-next-finish.
1
**DICA**: Às vezes pode ser necessário trocar o Provedor MSSCCI padrão no seu computador. Isso é especialmente verdade se você tiver outro provedor MSSCCI (como o SourceSafe) instalado. Para poder usar o TFS, você deve definir o seu provedor MSSCCI como o padrão. O único detalhe é que não há nenhuma forma nativa de fazer isso. Você pode definir o provedor padrão [diretamente no Registry](https://support.microsoft.com/en-us/kb/319318) ou então baixar um dentre os diversos utilitários disponíveis para isso. No passado eu já usei o [SccSwitch](http://sharptoolbox.com/tools/sccswitch), mas foi descontinuado. Nas minhas pesquisas para este post, encontrei [este](http://www.codeproject.com/Articles/2264/Sourcecode-Control-Switcher) no CodeProject. Na dúvida, prefiro ir direto no Registry e editar na mão.
EPocalipse SourceConneXion
Como comentei anteriormente, o SourceConneXion – peça-chave para a integração com o TFS – é pago. A versão para Delphi 7 custa 49 euros. Ah, antes que alguém pergunte: Nem eu nem a Lambda3 temos qualquer tipo de vínculo comercial com a empresa EPocalipse. Estou indicando o plug-in deles simplesmente porque foi a única opção que encontrei para integrar o Delphi com o TFS. O lado bom é que você pode baixar uma versão trial de trinta dias.
Depois de uma instalação padrão next-next-finish, ao abrir o Delphi pela primeira vez após a instalação será exibida a tela de configuração inicial do SourceConneXion:
Na etapa seguinte o SourceConneXion pergunta qual provedor MSSCCI você vai usar. Selecione o TFS:
Daí é a hora de configurar opções específicas do provedor MSSCCI em uso. No caso do TFS, ele dá a opção de configurar o modelo padrão de bloqueio de arquivos. O comportamento padrão do TFS é “None” (copy-modify-merge). Se você preferir o modelo de checkout exclusivo do SourceSafe, selecione a opção “Check Out” (lock-modify-unlock).
Lembra que o SourceConneXion permite que você integre o Delphi a qualquer controle de versão que suporte a API MSSCCI, certo? Por isso, um usuário pode ligar o Delphi a diferentes controles de versão que, por sua vez, podem usar nomes distintos para a mesma operação. Imagine, como exemplo, “Check In” no TFVC e “Commit” no Subversion.
Para lidar com essas diferenças, o SourceConneXion permite que você personalize os termos que serão usados na sua interface. Assim, você pode usar a nomenclatura correspondente ao seu sistema de controle de versão. Por uma feliz coincidência, ele usa por padrão os mesmos termos do TFS; portanto, você pode aceitar as sugestões oferecidas.
Com isso está concluída a configuração inicial. Repare que agora há um menu chamado Source Control no Delphi, que oferece acesso aos recursos do TFS. É através dele que iremos adicionar nosso projeto a um repositório TFVC:
Agora, indique o servidor (na verdade a Team Project Collection) e então selecione o Team Project onde o projeto será adicionado:
Depois é hora de indicar quais arquivos do seu projeto serão adicionados ao controle de versão. Tipicamente você vai querer adicionar todos:
E finalmente uma tela familiar para quem está acostumado com o TFS. Olha a tela padrão de check-in do TFVC aí!
Nela temos à disposição todos os recursos que o TFVC oferece para nossos projetos: Associação com itens de trabalho, políticas de check-in, notas de check-in… Integração completa!
Confirme o check-in e pronto. Nosso projeto Delphi está sob controle de versão no TFS!
Daqui para a frente, use o menu Source Control para interagir com o TFS a partir do IDE do Delphi:
Uma das coisas bacanas de se ter uma integração nativa com o controle de versão diretamente no IDE é conseguir ter acesso fácil ao histórico de alterações. No menu Source Control, selecione o comando Show Difference para abrir a caixa de diálogo de histórico. Aqui, você pode selecionar dois changesets diferentes para comparar as alterações entre as duas versões:
Clique com o botão direito sobre um dos changesets selecionados e então clique no comando Compare. Será aberta uma janela do Visual Studio com o diff entre as duas versões do arquivo escolhido:
Bacana, né? Agora, pode ser que seu time prefira usar o Git. Nesse caso, vamos ver como ligar o Delphi a um repositório Git do TFS.
Integração Git e Delphi
Agora vamos falar de Git?
Usar o Git do TFS não é diferente de usar o Git do GitHub, GitLab ou qualquer outro serviço/servidor remoto de Git. No fim do dia, todos eles são simplesmente um “remote” com o qual você sincroniza (pull/push) seu clone local.
A primeira providência é instalar o cliente de Git no seu computador. Instale o Git for Windows, que já vem com o Credential Manager da Microsoft (que facilita muito a vida de quem usa TFS e/ou VSTS).
Clonando o repositório
No Git, tudo começa a partir da operação de Clone – ou seja, a “cópia” de um repositório remoto (juntamente com seu histórico) – para o computador local. Para clonar um repositório, é preciso obter seu URL de clone. No TFS, você encontra essa informação na interface Web:
Agora, clone o repositório localmente. Abra um prompt de comando, crie uma pasta local e execute o seguinte comando:
1
git clone http://vsalm:8080/tfs/DefaultCollection/_git/DelphiTP
.gitignore
Umas das coisas mais importantes na configuração do Git para uma determinada linguagem de programação e/ou IDE é o arquivo .gitignore
. Ele determina quais arquivos devem ser ignorados pelo Git, de modo a não “sujar” o controle de versão. Arquivos temporários, outputs de compilação etc. variam de linguagem para linguagem e precisam de um gitignore correspondente. Para o Delphi, você pode encontrar um .gitignore
aqui. Para “instalar” o arquivo .gitignore
, salve-o com o nome .gitignore
(assim mesmo, começando com um ponto) na raíz do diretório onde você clonou o repositório Git, adicione-o (git add
) e salve-o (git commit
) no controle de versão. Na próxima operação de git add
, esses arquivos serão ignorados.
E o IDE?
Ainda que o recomendado pela maioria dos usuários de Git seja sempre “use a linha de comando!”, usuários de IDEs RAD como Delphi e Visual Basic preferem ficar no IDE a maior parte do tempo. Para aqueles que preferem a interface gráfica, uma opção é usar o Git SCC Proxy da PushOk. Ele também emula a API MSSCCI e, portanto, integra-se ao IDE através do SourceConneXion:
Tal como acontece com o TFVC, adicionar um plug-in MSSCCI para o Git traz recursos específicos do provedor para dentro do IDE. Por exemplo, veja a janela de histórico do Git SCC:
Mas eu ainda não sei usar o Git!
Como a internet está repleta de artigos sobre como usar o Git no dia-a-dia de projetos Delphi, acaba sendo um pouco “mais do mesmo” entrar em detalhes aqui. Por isso, sugiro dois materiais de estudo para você usar como ponto de partida:
- Introdução ao uso do Git com TFS e VSTS, no site do Visual Studio;
- Artigo sobre Delphi e Git do Daniel Wildt.
Conclusão
Viu como integrar o Delphi com o TFS pode ser mais simples do que você imaginava? Sim, o setup inicial dá um certo trabalho mas acredito que o resultado pode ser bem compensador. Experimente!
Ah, e não deixe de compartilhar sua opinião nos comentários do post!
Um abraço
Igor
06/10/2016 | Por Igor Abade V. Leite | Em Técnico | Tempo de leitura: 9 mins.