Desenvolvendo com VSTS: Undo Pending Changes

Novembro 7, 2007 at 11:22 am 2 comentários

Uma rápida e simples ferramenta para executar o comando Undo em todos os arquivos em check-out. 

Que o Visual Studio Team System é uma ferramenta fora do normal ninguém duvida. Mas trabalhando com esta ferramenta no dia-a-dia já é possível perceber a necessidade de criar outras ferramentas, baseadas nas funcionalidades deste sistema, para facilitar nossa vida. Pretendo escrever uma série de dicas, ferramentas que eu acho interessante, que pode ser interessante para você também J 

Este primeiro projeto surgiu da necessidade de executar undo em todos os arquivos com uma determinada extensão. Imaginei então a possibilidade de me conectar ao TFS, obter todos os meus pending changes, selecionar alguns e dar Undo.  

Para executar todas estas funcionalidades, por incrível que pareça, poucas linhas de código são necessárias.
Para começar, é fundamental estabelecer uma conexão ao TFS: 

NetworkCredential myCredential = CredentialCache.DefaultNetworkCredentials;
TeamFoundationServer tfServer = new TeamFoundationServer(“TeamFoundationServer”, myCredential); 

Através das credenciais a partir do contexto do usuário corrente, uma instância de TeamFoundationServer é criada, apontando para o servidor “TeamFoundationServer”. Próximo passo é criar um objeto VersionControlServer, que representa o banco de dados do TFS: 

VersionControlServer vcServer = tfServer.GetService(typeof(VersionControlServer)) as VersionControlServer; 

A partir deste objeto, é possível obter as informações de um determinado workspace de um determinado usuário, o objeto que realmente representa o workspace e as alterações pendentes: 

WorkspaceInfo wsInfo = Workstation.Current.GetLocalWorkspaceInfo(vcServer, “myWorkspace”, “myUserName”);
Workspace workspace = wsInfo.GetWorkspace(tfServer);
PendingChange[] pendingChanges = workspace.GetPendingChanges(); 

Pronto! Com apenas estas linhas de código já temos todas as alterações pendentes em mãos, agora é só executar a ação desejada.
Neste exemplo, para executar o Undo em todos os arquivos, basta executar o bloco de código abaixo: 

int undoExecution = workspace.Undo(pendingChanges); 

O retorno informa o número de arquivos processados. 

Para filtrar por extensão os pending changes que executarão Undo, basta fazer como abaixo: 

foreach (PendingChange change in pendingChanges)
{
         if (System.IO.Path.GetExtension(change.FileName).Equals(“.cs”))     
        
{
           
                
undoExecution = this.workspace.Undo(new PendingChange[] { pendingChange });
     
        
}
} 

Abraços!

Anúncios

Entry filed under: Team Foundation Server.

Coisas que aprendi e gostei sobre Debugging – Parte 1 Desenvolvendo com VSTS: Changesets

2 comentários Add your own

  • 1. Abdul Hade  |  Novembro 27, 2007 às 2:20 pm

    Ocorre o seguinte erro: The user name UsuarioQualquer is not a fully-qualified user name.
    Nome do parâmetro: workspaceOwner

    Responder
  • 2. andrenobre  |  Dezembro 20, 2007 às 3:56 pm

    Abdul,
    troque a string workspaceOwner pelo usuário dono do workspace (ex.: meu usuário na rede é “anobre”).

    Abraços!

    Responder

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Calendário

Novembro 2007
S T Q Q S S D
« Set   Dez »
 1234
567891011
12131415161718
19202122232425
2627282930  

Most Recent Posts


%d bloggers like this: