Determinando fatores para selecionar um programa

Há alguns fatores importantes a serem considerados ao decidir que programa será usado.

Cliente-servidor versus ponto a ponto

Dois modelos diferentes são comumente usados para distribuir dados. No primeiro modelo, todos os clientes sincronizam seus arquivos com um servidor central. O servidor deve ser acessível a todos os clientes pelo menos ocasionalmente. Esse modelo é usado pelo CVS.

A outra possibilidade é deixar todos os hosts ligados em rede sincronizarem seus dados entre os pontos uns dos outros. O rsync funciona de fato no modo cliente, mas qualquer cliente também pode atuar como servidor.

Portabilidade

O CVS e o rsync também estão disponíveis para muitos outros sistemas operacionais, incluindo vários sistemas Unix e Windows.

Interativo versus automático

No CVS, a sincronização de dados começa manualmente pelo usuário. Isso permite um controle fino dos dados a serem sincronizados e um fácil gerenciamento de conflitos. No entanto, se os intervalos de sincronização forem muito longos, será mais provável que ocorram conflitos.

Conflitos: incidência e solução

Conflitos só ocorrem raramente no CVS, mesmo quando há muitas pessoas trabalhando em um grande projeto de programa. Isso ocorre porque os documentos são fundidos na base de linhas individuais. Quando ocorre um conflito, somente um cliente é afetado. Normalmente, os conflitos no CVS podem ser facilmente resolvidos.

Não há gerenciamento de conflitos no rsync. O usuário é responsável por não sobregravar acidentalmente arquivos e resolver manualmente todos os possíveis conflitos. Por segurança, é possível empregar também um sistema de controle de versão.

Selecionando e adicionando arquivos

No CVS, diretórios e arquivos novos devem ser adicionados explicitamente com o comando cvs add. Esse procedimento resulta em um maior controle do usuário sobre os arquivos a serem sincronizados. Por outro lado, novos arquivos são sempre ignorados, especialmente quando os pontos de interrogação na saída de cvs update são ignorados devido ao grande número de arquivos.

Histórico

Um recurso adicional do CVS é a possibilidade de reconstrução de versões antigas de arquivos. Um breve comentário de edição pode ser inserido em cada mudança, e o desenvolvimento dos arquivos pode ser facilmente rastreado posteriormente com base no conteúdo dos comentários. Essa é uma ajuda valiosa para textos de teses e de programas.

Volume de dados e requisitos do disco rígido

Os discos rígidos de todos os hosts envolvidos devem ter espaço em disco suficiente para todos os dados distribuídos. O CVS requer espaço adicional para o banco de dados de repositório no servidor. O histórico do arquivo também é armazenado no servidor, requerendo ainda mais espaço. Quando arquivos em formato de texto são mudados, somente as linhas modificadas são gravadas. Arquivos binários requerem espaço em disco adicional relativo ao tamanho do arquivo sempre que ele for mudado.

GUI

Usuários experientes normalmente executam o CVS a partir da linha de comando. Entretanto, há interfaces gráficas do usuário disponíveis para Linux (como a cervisia) e para outros sistemas operacionais (como a wincvs). Muitas ferramentas de desenvolvimento (como a kdevelop) e editores de texto (como o Emacs) fornecem suporte ao CVS. É sempre mais fácil realizar a resolução de conflitos com esses front ends.

Facilidade de uso

O rsync é bastante fácil de usar, sendo também adequado para principiantes. O CVS é um pouco mais difícil de operar. Os usuários devem entender a interação entre o repositório e os dados locais. As mudanças dos dados devem ser primeiro fundidas localmente no repositório. Esse procedimento é feito com o comando cvs update. Em seguida, as mudanças devem ser retornadas ao repositório com o comando cvs commit. Depois de compreender esse procedimento, os usuários principiantes também serão capazes de usar o CVS com facilidade.

Segurança contra ataques

Durante a transmissão, o ideal é proteger os dados contra interceptação e manipulação. O CVS e o rsync podem ser facilmente usados via ssh (secure shell), fornecendo segurança contra ataques deste tipo. A execução do CVS via rsh (remote shell) deve ser evitada. O acesso ao CVS com o mecanismo pserver em redes desprotegidas também não é recomendável.

Proteção contra perda de dados

O CVS tem sido usado por desenvolvedores por um longo tempo para gerenciar projetos de programas e é extremamente estável. Como o histórico do desenvolvimento é gravado, o CVS fornece proteção até mesmo contra certos erros do usuário, como uma exclusão não intencional de um arquivo.

Tabela 26.1. Recursos das Ferramentas de Sincronização de Arquivos: -- = muito ruim, - = ruim ou indisponível, o = médio, + = bom, ++ = excelente, x = disponível

CSV

rsync

Cliente/Servidor

C-S

C-S

Portabilidade

Lin,Un*x,Win

Lin,Un*x,Win

Interatividade

x

x

Velocidade

o

+

Conflitos

++

o

Sel. de arquivos

Sel./arq., dir.

Dir.

Histórico

x

-

Espaço em disco rígido

--

o

Interface gráfica do usuário (GUI)

o

-

Dificuldade

o

+

Ataques

+ (ssh)

+(ssh)

Perda de dados

++

+