Propriétés

Enlever la propriété exécutable sur les fichiers.

find -type f -perm 755 -exec svn propdel svn:executable {} \;

statut des fichiers

svn status

Enlever des fichiers de la liste, propriétés: svn-ignore

# ignorer le dossier (dans le répertoire en cours)
svn ps svn:ignore dossier .

# ignorer tous les fichiers (dans le répertoire en cours)
svn ps svn:ignore '*' .

# pour utiliser un fichier .svnignore avec une liste de répertoire
# svn ne lit pas dans le fichier à chaque svn status, la commande lit seulement le fichier une fois pour configurer la propriété svn:ignore
svn ps svn:ignore -F .svnignore .

Installation de svn + https + authentification

subversion, apache2, libapache2-svn, openssl

HTTPS: voir Certificat pour apache avec debian
# creer le dépôt svn
mkdir -pv /var/lib/subversion
svnadmin create /var/lib/subversion/repos

# creer les directives d'apache vers svn ( dans le tag <virtual host> )
	<Location /svn>
		DAV svn
		SVNPath /var/lib/subversion/repos
		AuthType Basic
		AuthName "Subversion repository"
		AuthUserFile /var/lib/subversion/repos/conf/svnusers
		Require valid-user
		SSLRequireSSL
	</Location>

# creer le fichier d'authentification
htpasswd -c /var/lib/subversion/repos/conf/svnusers user1

Droits d'accès

# creer un groupe svnusers
groupadd svnusers

# ajouter l'utilisateur www-data au groupe et ajouter les droits
adduser www-data svnusers
chgrp -R svnusers /var/lib/subversion/repos
chmod -R g+w /var/lib/subversion/repos

# vous devez redémarrer apache2
/etc/init.d/apache2 restart

Tester en créant un projet

# creer un projet bidon
mkdir project1
echo "test1" > project1/file1
echo "test2" > project1/file2
svn import project1 --username user1 https://localhost/svn/project1 -m "Initial import"

# si apache n'a pas les droits, vous aurez le message d'erreur suivant:
# svn: Can't create directory '/var/lib/subversion/repos/db/transactions/0-1.txn': Permission denied
svn list -R --username user1 https://localhost/svn/

Plus de restrictions

Dans le location /svn du virtual host:
AuthzSVNAccessFile /var/lib/subversion/repos/conf/authz
/var/lib/subversion/repos/conf/authz

[groups]
project1 = user1
project2 = user2
admin = admin

[/]
#* = r
@admin = rw

[/project1]
@project1 = rw

[/project2]
@project2 = rw


Problème de svnmerge.py ?

svnmerge: command execution failed (exit code: 1)
svn --non-interactive merge --force -r 1:2 https://svn.example.com/trunk .
svn: GET request failed: 400 Bad Request

Vérifier ~/.subversion/servers pour utiliser la bibliothèque neon et pas serf.

Il semblerait que la bibliothèque serf ne fonctionne pas pour des transferts trop important.

[groups]
example = svn.example.com

[example]
#http-library = serf
http-library = neon

svn diff

Couleur, apt-get install colordiff, ~/.subversion/config vim-diff = colordiff