Nov 13 2006

Nova categoria: Team Coherence

Autor: Marcos Dell Antonio - Categorias: Team Coherence

Criei uma nova categoria chamada Team Coherence, pois publiquei quatro posts sobre este software e acho interessante separá-los para facilitar a procura pelo conteúdo.

É isso ae. Até +.

Comentários Faça o seu comentário

Nov 10 2006

Team Coherence: utilizando a TC Tracker API

Autor: Marcos Dell Antonio - Categorias: Team Coherence

Para quem ainda não conhece, o TC Tracker é um dos módulos do Team Coherence (veja mais sobre o TC neste post). Ele é responsável pela gerência de requisições e bugs.

O próprio cliente do TC já oferece uma interface muito agradável e prática para trabalhar com o Tracker. No entanto, também está disponível uma API que implementa (ou melhor, disponibiliza, pois faz chamas às rotinas nativas) todas as funcionalidades que existem no servidor do TC. Desta forma, é possível criar um sistema de controle de requisições e bugs de acordo com as necessidades do usuário.

Esta API é escrita em Delphi e, como dito anteriormente, faz chamadas às rotinas nativas utilizando stdcall. O download é gratuito e pode ser feito aqui.

Para utilizá-la, basta fazer o download, descompactar e copiar os .pas para o diretório com os fontes do projeto. Abaixo segue um exemplo bem simples que mostra como conectar no servidor do TC e listar os projetos cadastrados:

1 procedure TfrmPrincipal.btnGoClick(Sender: TObject); 2 var 3 conn, 4 user: string; 5 connected: boolean; 6 result: integer; 7 begin 8 try 9 result := TrkConnect(Local, Marcos, xxxxx); 10 if (result <> Err_OK) then 11 ShowMessage(Erro ao conectar: + IntToStr(result)); 12 13 cdsProjetos.EmptyDataSet; 14 result := TrkEnumProjects(AdicionaProjeto, cdsProjetos); 15 if (result <> Err_OK) then 16 ShowMessage(Erro ao listar os projetos: + 17 IntToStr(result)) 18 finally 19 TrkCurrentConnection(conn, user, connected); 20 if (connected) then 21 begin 22 result := TrkDisconnect; 23 if (result <> Err_OK) then 24 ShowMessage(Erro ao desconectar: + IntToStr(result)); 25 end; 26 end; 27 end;

Na linha 9, faço uma chamada à função TrkConnect passando o nome da conexão, usuário e senha.

Na linha 14, chamo a função TrkEnumProjects para retornar todos os projetos cadastrados. Ela recebe dois parâmetros: uma função que trata o que será feito com cada projeto retornado e um ponteiro para alguma informação extra, neste caso, um DataSet. A rotina que passei como parâmetro deve seguir a seguinte assinatura:

1 function (data: Pointer; name: string; id: Cardinal): boolean;

Sua implementação simplesmente adiciona o projeto em questão ao DataSet e retorna true para continuar o processo:

1 function AdicionaProjeto(data: Pointer; name: 2 string; id: Cardinal): boolean; 3 begin 4 TClientDataSet(data).Append; 5 TClientDataSet(data).FieldByName(id).AsInteger := id; 6 TClientDataSet(data).FieldByName(name).AsString := name; 7 TClientDataSet(data).Post; 8 9 Result := true; 10 end;

O resultado final é apresentado abaixo:

Existem várias outras rotinas disponíveis para acessar o TC Tracker. Todas elas bem documentadas e de fácil uso. Além disso, também está disponível uma API para acessar o controle de versão (Version Manager). O download desta pode ser feito aqui.

É isso ai. T+

Comentários Faça o seu comentário

Nov 09 2006

Team Coherence: Removendo o log dos fontes

Autor: Marcos Dell Antonio - Categorias: Team Coherence

Este post é uma continuação da série sobre o Team Coherence (TC). Os outros estão aqui:

  1. Builds automatizados usando o Team Coherence;
  2. Sincronização de arquivos com o Team Coherence.

Por padrão, o TC armazena o log das alterações no próprio código fonte, como apresentado na imagem abaixo:

Isso causa um grande problema aos desenvolvedores: após um longo tempo de uso, praticamente 50% do que está escrito no arquivo é referente ao log do TC. Desta forma, ao abrir um determinado fonte, é necessário utilizar a tecla Page Down até o fim do log, o que às vezes torna-se muito chato, pois isso normalmente é realizado várias vezes durante o dia.

No próprio cliente do TC é possível configurar para que este log não apareça mais nos arquivos. Para fazer isso, no menu Tools existe a opção File Groups (vide imagem abaixo).

Como exemplo, utilizarei o item Delphi Unit Files. Basta clicar sobre ele e escolher a opção Modify. Na tela que aparecerá, o campo Expand keywords in files with the following extensions deve ficar em branco, tal como apresentado na imagem abaixo:

Desta forma, sempre que um Check In for feito o comentário não aparecerá no código fonte, mas continuará disponível no TC.

Além desta opção, também é possível personalizar o Header que é incluído no primeiro Check In de cada arquivo. Para isto, clique sobre o botão Header e personalize da forma que desejar. Além do texto “fixo”, também estão disponíveis algumas Keywords que durante o Check In terão seu valor alterado de acordo com a situação. São elas:

  1. $Log: será substituída pela revisão e versão do arquivo;
  2. $Revision: número da revisão;
  3. $Version: número da versão;
  4. $Author: autor que fez o Check In;
  5. $RevDate: data da revisão;
  6. $RevComments: comentário da revisão;
  7. $ModDate: data de modificação do arquivo;
  8. $ProjectName: nome do projeto em questão;
  9. $NoExpand: nenhuma keyword será substituída a partir deste ponto.

A palavra chave deve ser utilizada com os dois pontos (:). Exemplo:

 É isso aí! T+ :P

Comentários Faça o seu comentário

Oct 25 2006

Sincronização de arquivos com o Team Coherence

Autor: Marcos Dell Antonio - Categorias: Team Coherence

Além do gerenciamento de arquivos (versão, controle de acesso, etc.), o Team Coherence (TC) também é capaz de manter arquivos locais sincronizados com o servidor.

Em um post no início deste mês, falei sobre como utilizar o TC para gerar Builds automatizados. Neste, vou comentar sobre as duas formas de manter um projeto local sincronizado com o servidor.

Vamos lá.

Get: esta é a forma mais óbvia que existe, tanto é que eu a utilizava até esses dias. Basta navegar até o projeto desejado, verificar quais arquivos não estão sincronizados, selecioná-los, clicar com o botão direito sobre a lista selecionada e escolher a opção Get;

Synchronize with view: essa opção descobri recentemente. Basta selecionar um ou vários projetos, clicar com o botão direito sobre eles e clicar em Synchronize with view. De acordo com o help do TC, todos os arquivos Out of Date ou Missing serão sincronizados. Os arquivos marcados como Modified serão ignorados. Entretanto, é possível fazer com que eles entrem nesse processo através da opção Tools/Options/Other/Include Modified (not locked) files when Synchronizing (veja na imagem abaixo). Como pode ser visto, os arquivos locados serão ignorados.

Tudo isso aí na prática funciona assim:

  1. Chefe pede um build dos projetos;
  2. Programador vai até o gerenciador de fontes e atualiza todos os projetos utilizando uma das opções acima;
  3. Programador faz o build de todos os projetos utilizando o recurso Automated Build Utility.

É isso aí! T+

Comentários Faça o seu comentário

Oct 06 2006

Builds automatizados usando o Team Coherence

Autor: Marcos Dell Antonio - Categorias: Team Coherence

Gerar o build (ou efetuar a compilação) de vários projetos é uma tarefa chata e que leva certo tempo. Muitas vezes, como aqui na empresa, também é uma tarefa repetitiva.

Com o intuito de “trabalhar menos e render mais”, acabei descobrindo que o nosso Sistema de Controle de Versão, o Team Coherence, suporta a geração de builds automatizados para os projetos escritos em Delphi (aparentemente suporta para qualquer compilador, mas não entrei em detalhes).

Existe uma funcionalidade chamada Automated Build Utility onde o desenvolvedor pode criar uma seqüência de projetos e executar o build em cada um deles separadamente ou tudo de uma vez só.

Um exemplo:

Ao clicar em File / Execute Package, o Team Coherence iniciará o build pelo projeto Configurador. Após terminar, vai ao Orçamento e assim sucessivamente.

Para criar um projeto deste tipo, basta usar um objeto do menu à esquerda de acordo com o Compilador em questão (usei o Delphi 6 Project). Após isso, duplo clique sobre ele e é preciso definir o Project file na aba General. Ao carregar o dpr, o próprio Team Coherence se encarrega de buscar algumas configurações, tais como: Output directory, Unit output directory, etc.

Para ter os projetos funcionando aqui, foi preciso definir o Search path com o mesmo valor do Library Path do Delphi.

Essas setas verdes entre os projetos indicam uma relação de ordem na compilação, ou seja, primeiro compila o Configurador, depois o Orçamento e por aí vai. Elas são chamadas de Workflow

É isso aí! T+

Comentários Faça o seu comentário