{{tag>Brouillon}} # Notes SVN Subversion ## Client Voir : [[Svn erreur svn cannot negotiate authentication mechanism]] Voir aussi : **Git** ~~~bash svn status ~~~ ~~~bash svn revert plop/foo svn rm plop/ svn commit -m "* message" ~~~ "svn unadd" ~~~bash svn revert --recursive folder_name ~~~ Mode non interactif ~~~bash 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 ` ~~~bash svn propset svn:executable ON plop.sh ~~~ Revert all ~~~bash svn revert -R . ~~~ Undo commit ~~~bash svn update # Undo range svn merge -r UPREV:LOWREV . # Undo single revision svn merge -c -REV . ~~~ Proxy `~/.subversion/servers` ~~~ini [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` ~~~bash #!/bin/sh /usr/bin/vimdiff ${6} ${7} ~~~ ~~~bash chmod +x ~/.local/bin/svnvimdiff.sh ~~~ Utilisation ~~~bash 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` ~~~ini [auth] password-stores = ~~~ **Le mot de passe est enregistré en clair** ici : `~/.subversion/auth/svn.simple/` Ou sinon `~/.bashrc` ~~~bash # 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` ~~~bash 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 ~~~bash svnadmin create /path/to/repository ~~~ Puis Then you can check out local copies directly: ~~~bash svn co /path/to/repository /path/to/my/checkout ~~~ Ou over ssh: ~~~bash svn co svn+ssh://server/path/to/repository ~~~ #### Notes install avec Apache Source : http://hikage.developpez.com/linux/tutoriels/subversion/?page=page_2 ~~~bash apt-get install subversion libapache2-mod-svn libapache2-svn apache2 apache2-utils #subversion-tools a2enmod dav_svn ~~~ ~~~bash mkdir -p /var/subversion/depot/ svnadmin create /var/subversion/depot/projet1/ ~~~ `/etc/apache2/mods-available/dav_svn.conf` ~~~apache 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 ~~~ ~~~bash mkdir /var/subversion/conf/ htpasswd -c /var/subversion/conf/htpasswd jibe htpasswd /var/subversion/conf/htpasswd utilisateur2 ~~~ `/var/subversion/conf/access` ~~~ini [groups] devfoo = jean, utilisateur2 [projet1:/] @devfoo = rw [projetprivejean:/] jean = rw * = r [projetprivejean:/documentation/utilisateur] auteurdoc = rw ~~~ ~~~bash chown www-data: -R /var/subversion/ ~~~ ~~~bash 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 ~~~bash 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` ~~~ini [general] anon-access = none password-db = passwd realm = Projet 1 ~~~ `/var/svn/projet1/conf/passwd` ~~~ini [users] jibero = jibe jiberw = jibe ~~~ `/var/svn/projet1/conf/authz` ~~~ini [/plop] jibe = rw ~~~ ~~~bash 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' ~~~