O Criador | CollabNet |
---|---|
Desenvolvido por | Apache Software Foundation |
Primeira versão | 20 de outubro de 2000 |
Última versão | 1.14.1 (10 de fevereiro de 2021) |
Depósito | svn.apache.org/repos/asf/subversion/trunk |
Escrito em | VS |
Sistema operacional | GNU / Linux , Microsoft Windows , macOS e BSD ( d ) |
Modelo | Gerenciamento de versão centralizado ( d ) |
Licença | Licença Apache versão 2.0 |
Local na rede Internet | subversion.apache.org |
Subversion (abreviado como svn ) é um software de controle de versão , lançado sob a licença Apache . Ele foi projetado para substituir o CVS . Os seus autores apoiam-se voluntariamente nos mesmos conceitos (em particular no princípio do repositório centralizado e único) e consideram que o modelo CVS é bom, apenas a sua implementação pode ser melhorada.
O Subversion, portanto, funciona no modo cliente-servidor , com:
O projeto foi lançado em Fevereiro de 2000pela CollabNet , com a contratação de Jim Blandy de Karl Fogel , que já estava trabalhando em um novo software de controle de versão.
O 14 de fevereiro de 2010, SVN tornou-se oficialmente um projeto da Fundação Apache , recebendo o nome de Apache Subversion .
O Subversion foi escrito para preencher algumas lacunas no CVS .
Aqui estão as principais contribuições:
Do ponto de vista do usuário comum, as principais mudanças ao mudar para o Subversion são:
Uma das peculiaridades do Subversion é que ele não distingue entre um rótulo , um ramo e um diretório . É uma convenção de nomenclatura simples para seus usuários. Isso torna muito fácil comparar uma etiqueta e uma ramificação ou outra cruz.
Independentemente do sistema de controle de versão, os números de revisão com vários dígitos são difíceis de lembrar. Por esse motivo, muitos sistemas permitem ao usuário definir tags como sinônimos que são mais fáceis de lembrar. Mas o que o Subversion recomenda usar como uma tag é de uma natureza completamente diferente: uma vez que o comando é svn copyfeito, uma tag do Subversion não tem absolutamente nenhuma memória de qual número de revisão veio. Enquanto na maioria dos outros sistemas uma tag é uma referência , uma "tag" do Subversion é apenas uma cópia. Apenas algumas referências predefinidas estão disponíveis: HEAD, PREV, BASE, COMMITTED.
Outra diferença é que as tags em outros sistemas são pontos no tempo, enquanto o Subversion recomenda definir as tags como pontos no espaço do sistema de arquivos.
Esta falta de tag no sentido usual torna algumas operações um pouco menos práticas no Subversion. Por exemplo, encontrar o que mudou de uma tag para outra em um arquivo é um pouco mais complicado do que executar um comando simples: svn diff -r tag1:tag2 monfichierno diretório de trabalho.
Outras operações tornam-se impossíveis: por exemplo, um comando como svn log -r tag1:tag2 monfichiernão funciona e não há alternativa que funcione.
Para superar essas deficiências, a adição de “rótulos” ou “aliases” foi proposta nas listas de mala direta do SVN. Esses rótulos seriam equivalentes a tags de outros sistemas como CVS , git ou outro. Em 2010, essa sugestão não passou do estágio de discussão.
Ordenado | Significado |
---|---|
adicionar | Declare a adição de um novo recurso para o próximo commit. |
culpa | Permite saber qual colaborador enviou as linhas de um arquivo. |
checkout (co) | Recupera localmente uma versão e seus metadados do repositório. |
Limpar | Limpe a cópia local para trazê-la de volta a um estado estável. |
comprometer (ci) | Salva as mudanças locais no repositório criando uma nova versão. |
cópia (cp) | Copie recursos para outro local (localmente ou no repositório). |
deletar (rm) | Declare a remoção de um recurso existente para o próximo commit (ou remova diretamente um recurso do repositório). |
diff (di) | Calcula a diferença entre duas versões (permite criar um patch para aplicar a uma cópia local). |
exportar | Recupera uma versão sem metadados do repositório ou cópia local. |
importar | Envia uma árvore local para o repositório. |
informação | Fornece informações sobre a origem da cópia local. |
lista (ls) | Lista as entradas em um diretório de repositório. |
trancar | Bloqueia um arquivo. |
registro | Dá mensagens de confirmação para um recurso. |
fundir | Calcula a diferença entre duas versões e aplica essa diferença à cópia local. |
mover (mv) | Declara a movimentação de um recurso. |
propdel (pd) | Remove a propriedade do arquivo. |
propedit (pe) | Edite o valor de uma propriedade. |
profeta (pg) | Retorna o valor de uma propriedade. |
proplist (pl) | Fornece uma lista de propriedades. |
propset (ps) | Adiciona uma propriedade. |
resolvido | Usado para declarar que um conflito de modificação foi resolvido. |
reverter | Reverte para uma determinada versão de um recurso. As alterações locais são substituídas. |
status (st) | Indica as mudanças que foram feitas. |
interruptor (sw) | Mude para uma versão / ramo diferente do repositório. |
atualizar (subir) | Atualiza a cópia local existente da última versão disponível no repositório. |
desbloquear | Remova um cadeado. |
O acesso ao servidor subversion pode ser feito usando seu protocolo nativo (porta TCP padrão: 3690), ou através de uma conexão HTTP (o servidor deve então suportar as extensões WebDAV). Esses dois modos de acesso podem ser protegidos na camada de transporte (túnel SSH ou HTTPS), o que é especialmente recomendado no caso de servidores em uma rede pública como a Internet.
Além da ferramenta de linha de comando, existem vários softwares fornecidos com interface gráfica, na forma de executável autônomo , mas também plug-ins em particular para EDI .
Dois tipos de servidores subversion estão disponíveis atualmente:
Em servidores Windows, o software VisualSvn Server permite empacotar Apache + Subversion com configuração automática e um console gráfico de administração de servidor para gerenciar direitos de um servidor ActiveDirectory ...