{{tag>Brouillon}}
= Notes SVN Subversion
== Client
Voir : [[Svn erreur svn cannot negotiate authentication mechanism]]
Voir aussi : **Git**
svn status
svn revert plop/foo
svn rm plop/
svn commit -m "* message"
"svn unadd"
svn revert --recursive folder_name
Mode non interactif
svn --non-interactive --trust-server-cert --username toto --password 'P@ssw0rd' --no-auth-cache checkout https://srv-svn/projet
Changer les droits posix.
Equivalent à ''chmod +x ''
svn propset svn:executable ON plop.sh
Revert all
svn revert -R .
Undo commit
svn update
# Undo range
svn merge -r UPREV:LOWREV .
# Undo single revision
svn merge -c -REV .
Proxy
''~/.subversion/servers''
[global]
# http-proxy-exceptions = *.exception.com, www.internal-site.org
# http-proxy-host = defaultproxy.whatever.com
# http-proxy-port = 7000
# http-proxy-username = defaultusername
# http-proxy-password = defaultpassword
http-proxy-host = 192.168.56.1
http-proxy-port = 3128
Ou voir ''/etc/subversion/servers''
=== SVN diff avec Vimdiff
''~/.local/bin/svnvimdiff.sh''
#!/bin/sh
/usr/bin/vimdiff ${6} ${7}
chmod +x ~/.local/bin/svnvimdiff.sh
Utilisation
svn diff --diff-cmd ~/.local/bin/svnvimdiff.sh README.md
Source : https://stackoverflow.com/questions/7866286/how-to-view-svn-diff-in-vimdiff-style-in-svn
== Pb
=== Pb - svn demande le mot de passe à chaque commande - linux svn keeps asking for password
==== Solution 1
''~/.subversion/config'' ou ''/etc/subversion/config''
[auth]
password-stores =
**Le mot de passe est enregistré en clair** ici : ''~/.subversion/auth/svn.simple/''
Ou sinon
''~/.bashrc''
# gpg-agent is used by svn (svn keep asking for password if GPG_TTY is not set)
GPG_TTY=$(tty)
export GPG_TTY
==== Solution 2
Utiliser l'option ''--no-auth-cache''
svn --non-interactive --trust-server-cert --username toto --password 'P@ssw0rd' --no-auth-cache checkout https://srv-svn/projet
== Serveur
=== Install serveur Subversion
Voir : https://doc.ubuntu-fr.org/subversion
Voir aussi :
* https://technique.arscenic.org/services-web/subversion-et-trac/article/installation-du-serveur-svn
Source : https://stackoverflow.com/questions/4797242/install-subversion-on-ubuntu-with-nginx-not-apache
Si pas besion de HTTP
svnadmin create /path/to/repository
Puis
Then you can check out local copies directly:
svn co /path/to/repository /path/to/my/checkout
Ou over ssh:
svn co svn+ssh://server/path/to/repository
==== Notes install avec Apache
Source : http://hikage.developpez.com/linux/tutoriels/subversion/?page=page_2
apt-get install subversion libapache2-mod-svn libapache2-svn apache2 apache2-utils #subversion-tools
a2enmod dav_svn
mkdir -p /var/subversion/depot/
svnadmin create /var/subversion/depot/projet1/
''/etc/apache2/mods-available/dav_svn.conf''
DAV svn
Require valid-user
SVNParentPath /var/subversion/depot/
AuthType Basic
AuthName "Mon dépôt"
AuthUserFile /var/subversion/conf/htpasswd
AuthzSVNAccessFile /var/subversion/conf/access
mkdir /var/subversion/conf/
htpasswd -c /var/subversion/conf/htpasswd jibe
htpasswd /var/subversion/conf/htpasswd utilisateur2
''/var/subversion/conf/access''
[groups]
devfoo = jean, utilisateur2
[projet1:/]
@devfoo = rw
[projetprivejean:/]
jean = rw
* = r
[projetprivejean:/documentation/utilisateur]
auteurdoc = rw
chown www-data: -R /var/subversion/
mkdir /tmp/plop
cd /tmp/plop
mkdir trunk tags branches
svn import file:///var/subversion/depot/projet1 -m 'Initial project directories'
==== Notes install sans Apache
cd /var/
mkdir svn
svnadmin create /var/svn/projet1
#chmod o-r /var/svn/projet1/conf/authz
#chmod o-r /var/svn/projet1/conf/passwd
cd /var/svn/projet1
mkdir trunk tags branches
#svn import /var/svn/projet1/tags file:///var/svn/projet1/ -m 'Initial project directories'
''/var/svn/projet1/conf/svnserve.conf''
[general]
anon-access = none
password-db = passwd
realm = Projet 1
''/var/svn/projet1/conf/passwd''
[users]
jibero = jibe
jiberw = jibe
''/var/svn/projet1/conf/authz''
[/plop]
jibe = rw
sudo addgroup svn --system
sudo adduser svn --system --home /var/svn --no-create-home --ingroup svn
sudo chown -R svn: /var/svn
su - svn -s /bin/bash -c 'svnserve -d --foreground -T -r /var/svn/projet1 --listen-port=3690 --listen-host=localhost'