O que torna o TortoiseSVN um bom cliente Subversion? Aqui está uma pequena lista de funcionalidades:
O TortoiseSVN integra-se sem problemas com a shell do Windows (i.e. o explorador). Isto significa que pode continuar a trabalhar com as ferramentas com que está familiarizado, e não terá de mudar de programa de cada vez que necessita das funcionalidades do controlo de versões!
E não está limitado a utilizar o Explorador do Windows. Os menus de contexto do TortoiseSVN funcionam em muitos outros gestores de ficheiros, e também na caixa de diálogo de Ficheiro/Abrir, que é comum à maioria das aplicações de referência do Windows. Deverá no entanto ter em conta que, o TortoiseSVN foi intencionalmente desenvolvido como uma extensão para o Explorador do Windows. Pelo que é possível que noutras aplicações esta integração não seja tão completa, como por exemplo os ícones sobrepostos poderão não ser mostrados.
O estado de cada ficheiro e pasta versionada é indicado através de pequenos ícones sobrepostos. Desta maneira é possível visualizar de imediato o estado da sua cópia de trabalho.
Quando lista as alterações a um ficheiro ou pasta, pode clicar numa determinada revisão para visualizar os comentários dessa submissão. Pode também ver a lista de ficheiros alterados - faça apenas duplo clique num ficheiro para ver exatamente o que foi alterado.
A caixa de diálogo de submeter, lista todos os itens que irão ser incluídos numa submissão, cada item tem uma caixa de verificação, para que possa escolher quais os itens que quer incluir. Os ficheiros não versionados também podem ser listados, para o caso de se esquecer de adicionar aquele novo ficheiro.
Toldos os comandos do Subversion estão disponíveis através do menu de contexto do explorador. O TortoiseSVN adiciona aqui o seu sub-menu.
Sendo o TortoiseSVN um cliente do Subversion, gostaríamos também de mostrar algumas das funcionalidades específicas do Subversion:
O CVS só segue o histórico de ficheiros individuais, mas o Subversion implementa um sistema “virtual” de ficheiros versionados que segue as alterações em todo o sistema de ficheiros ao longo do tempo. Os ficheiros e as pastas são versionadas. Como resultado, existem comandos reais do lado do cliente de, mover e copiar que atuam em ficheiros e pastas.
Uma submissão para o repositório ou é executada por completo ou não o é de todo. Este comportamento permite aos programadores construirem e submeterem alterações para o repositório como blocos lógicos.
Cada ficheiro ou pasta possuem um conjunto invisível de “propriedades” agarrados a si. Poderá então inventar e armazenar qualquer conjunto arbitrário de pares chave/valor que deseje. As propriedades são versionadas ao longo do tempo tal como os conteúdos dos ficheiros.
O Subversion tem uma noção abstrata do acesso ao repositório, tornando fácil para as pessoas a implementação de novos mecanismos de rede. O servidor de rede “avançado” do Subversion é um módulo para o servidor web Apache, que fala uma variante do protocolo HTTP, chamado WebDAV/DeltaV. Isto dá ao Subversion uma grande vantagem em estabilidade e interoperabilidade e fornece várias funcionalidades chave gratuitamente: autenticação, autorização, compressão em linha e navegação de repositório, por exemplo. Um processo de servidor Subversion mais pequeno e autónomo é também fornecido. Este servidor fala um protocolo personalizado que pode ser facilmente "tunelizado" através de ssh.
O Subversion exprime as diferenças nos ficheiros usando um algoritmo de diferencial binário, que funciona de modo igual, tanto para ficheiros de texto (legíveis para humanos) como para ficheiros binários (ilegíveis para humanos). Ambos os tipos de ficheiros estão armazenados de igual modo, e comprimidos no repositório e as diferenças são transmitidas em ambas as direções através da rede.
O custo de ramificação e etiquetação não tem de ser proporcional à dimensão do projeto. O Subversion cria ramos e etiquetas através da simples cópia do projeto utilizando um mecanismo semelhante a um hard-link. Sendo assim, estas operações necessitam de apenas de uma pequena e constante fração de tempo, necessitando de muito pouco espaço no repositório.