Subversion-1.14.3

Introdução ao Subversion

"Subversion" é um sistema de controle de versão que foi projetado para ser um substituto atraente para o "CVS" na comunidade de fonte aberto. Ele amplia e aprimora o conjunto de recursos do "CVS", enquanto mantém uma interface semelhante para aqueles(as) já familiarizados(as) com o "CVS". Estas instruções instalam o logiciário cliente e servidor usado para manipular um repositório "Subversion". A criação de um repositório é abordada em Executando um Servidor "Subversion".

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.2.

Informação do Pacote

  • Transferência (HTTP): https://archive.apache.org/dist/subversion/subversion-1.14.3.tar.bz2

  • Transferência (FTP):

  • Soma de verificação MD5 da transferência: 19756a5ceb32a022698a66e48616ef6b

  • Tamanho da transferência: 8,2 MB

  • Espaço em disco estimado exigido: 193 MB (adicionar 189 MB para ligações, 54 MB para documentos, 1,3 GB para testes)

  • Tempo de construção estimado: 0,5 UPC (Usando paralelismo=4; adicionar 2,0 UPC para ligações, 30 UPC para testes)

Transferências Adicionais

Dependências do Subversion

Exigidas

Apr-Util-1.6.3 e SQLite-3.46.1

Recomendadas

Opcionais

Apache-2.4.62, Boost-1.86.0, Cyrus SASL-2.1.28, dbus-1.14.10, Doxygen-1.12.0 (para gerar documentação HTML), gnome-keyring-46.2, libsecret-0.21.4, Py3c-1.4 (para as ligações Python e testes), Python-3.12.5 (com suporte sqlite para os testes), Ruby-3.3.4, SWIG-4.2.1 (para construir ligações Perl, Python e Ruby) e UTF8proc

Opcionais (para as ligações Java)

Um de OpenJDK-22.0.2, Dante ou Jikes; JUnit 4 (para testar as ligações "Java") e apache-ant-1.10.14.

Instalação do Subversion

Primeiro, adapte alguns "scripts" "Python" para usar "python3":

grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'

A seguir, corrija construir esse pacote com GCC 14:

patch -Np1 -i ../subversion-1.14.3-upstream_fixes-1.patch

Depois de modificar as ligações SWIG como nós fizemos com o remendo, o sistema de construção precisa ser regenerado de forma que as ligações absorvam as mudanças:

touch build/generator/swig/*.py &&
mv -v build-outputs.mk{,.old}   &&
./autogen.sh --release

Instale Subversion executando os seguintes comandos:

PYTHON=python3                        \
./configure --prefix=/usr             \
            --disable-static          \
            --with-apache-libexecdir  \
            --with-utf8proc=internal &&
make

Se você tiver "Doxygen-1.12.0" instalado e desejar construir a documentação da "API", emita:

doxygen doc/doxygen.conf

Se você deseja construir as ligações Java, [então] passe o parâmetro "--enable-javahl" para o comando "configure". Além disso, se desejar executar a suíte de teste "Java", [então] você tem de especificar o local do arquivo "JUnit" adicionando "--with-junit=<caminho para o jar junit>" (por exemplo "--with-junit=/usr/local/java/lib/junit-4.13.jar") para o "configure". O arquivo "jar" do "JUnit" não mais está incluído em "apache-ant-1.10.14" e precisa ser baixado separadamente. Para construir as ligações "Java", emita o seguinte comando:

make -j1 javahl

Se tu desejar compilar ligações "Perl", "Python" ou "Ruby", [então] emita algum dos seguintes comandos:

make swig-pl # para Perl
make swig-py \
     swig_pydir=/usr/lib/python3.12/site-packages/libsvn \
     swig_pydir_extra=/usr/lib/python3.12/site-packages/svn # para Python
make swig-rb # para Ruby

Para testar os resultados, emita: make check. Quatro testes nas suítes commit_tests.py, prop_tests.py e update_tests.py são conhecidos por falharem. Devido às mudanças no Python-3.12, você pode esperar ver cerca de 200 avisos de sintaxe durante a suíte de teste devido a sequências inválidas de escape.

Para testar os resultados de quaisquer das ligações "SWIG", você pode usar algum dos seguintes comandos: "make check-swig-pl", "make check-swig-py" ou "make check-swig-rb".

Agora, como o(a) usuário(a) root:

make install &&

install -v -m755 -d /usr/share/doc/subversion-1.14.3 &&
cp     -v -R doc/* /usr/share/doc/subversion-1.14.3

Se você construiu as ligações "Java", [então] emita o seguinte comando como o(a) usuário(a) "root" para instalá-las:

make install-javahl

Se você construiu as ligações "Perl", "Python" ou "Ruby", [então] emita algum dos seguintes comandos como o(a) usuário(a) "root" para instalá-las:

make install-swig-pl
make install-swig-py \
     swig_pydir=/usr/lib/python3.12/site-packages/libsvn \
     swig_pydir_extra=/usr/lib/python3.12/site-packages/svn
make install-swig-rb

As ligações "Java" precisam ser instaladas para a finalidade de que os testes executem, pois os testes tentam procurá-las em "CLASSPATH". Para testar os resultados da construção de ligações "Java", emita "LANG=C make check-javahl".

Explicações do Comando

--disable-static: Essa chave impede a instalação das versões estáticas das bibliotecas.

--with-apache-libexecdir: Se o "Apache-2.4.62" estiver instalado, [então] os módulos compartilhados do "Apache" serão construídos. Essa chave permite ter esses módulos instalados no diretório configurado de módulo do "Apache" em vez do "/usr/libexec". Ela não tem efeito se o "Apache" não estiver instalado.

--with-utf8proc=internal: Remova essas chaves se você tiver instalado as dependências opcionais.

--enable-javahl: habilita a compilação de ligações de alto nível "Java". Executar "make javahl" é necessário para fazer a compilação.

--with-junit=<local do arquivo "jar" do "JUnit">: dá o local do "jar" do "JUnit"; caso contrário, os testes "javahl" não poderão ser executados.

--disable-gmock: Não use a estrutura de testes "Googlemock".

Configurando o Subversion

Arquivos de Configuração

~/.subversion/config e /etc/subversion/config

Informação de Configuração

/etc/subversion/config é o arquivo de configuração do "Subversion" abrangente ao sistema. Esse arquivo é usado para especificar padrões para diferentes comandos "svn".

~/.subversion/config é o arquivo de configuração pessoal do(a) usuário(a). Ele é usado para substituir os padrões de todo o sistema configurados em "/etc/subversion/config".

Conteúdo

Aplicativos Instalados: svn, svnadmin, svnbench, svndumpfilter, svnfsfs, svnlook, svnmucc, svnrdump, svnserve, svnsync e svnversion
Bibliotecas Instaladas: libsvn_*-1.so e, opcionalmente, uma biblioteca Java; os módulos DSO mod_dav_svn.so e mod_authz_svn.so do Apache HTTP e vários módulos Perl, Python e Ruby.
Diretórios Instalados: /usr/include/subversion-1, /usr/lib/perl5/site_perl/5.40/{,auto/}SVN, /usr/lib/python3.12/site-packages/{libsvn,svn}, /usr/lib/ruby/site_ruby/<x.y.z>/{,<arch-linux>-linux/}svn, /usr/lib/svn-javahl e /usr/share/doc/subversion-1.14.3

Descrições Curtas

svn

é um aplicativo cliente de linha de comando usado para acessar repositórios do "Subversion"

svnadmin

é uma ferramenta para criar, ajustar ou reparar um repositório "Subversion"

svnbench

é uma ferramenta de avaliação comparativa

svndumpfilter

é um aplicativo para filtrar fluxos de formato de arquivo de despejo do repositório "Subversion"

svnfsfs

é a ferramenta de manipulação de repositório "FSFS" ("FileSystem sobre o FileSystem" - implementação do sistema de arquivos do "Subversion")

svnlook

é uma ferramenta para inspecionar um repositório "Subversion"

svnmucc

é um cliente de comando de múltiplas "URLs" para o "Subversion"

svnrdump

é uma ferramenta para despejar ou carregar um repositório remoto do "Subversion"

svnserve

é um aplicativo servidor independente personalizado, capaz de executar como um processo de segundo plano ou invocado por "SSH"

svnsync

é uma ferramenta de sincronização de repositório "Subversion"

svnversion

é usado para informar o número da versão e o estado de uma cópia funcional do repositório "Subversion"

libsvn_*-1.so

são as bibliotecas de suporte usadas pelos aplicativos do "Subversion"

mod_authz_svn.so

é um módulo "plug-in" para o servidor "HTTP" "Apache", usado para autenticar usuários(as) em um repositório "Subversion" por intermédio da Internet ou na intranet

mod_dav_svn.so

é um módulo "plug-in" para o servidor "HTTP" "Apache", usado para disponibilizar um repositório "Subversion" para outros(as) por intermédio da Internet ou de uma intranet