Catégories
Linux Trucs et astuces

git svn clone …. et « temp file with moniker ‘svn_delta’ already in use »

Lors d’essai de cloner des dépôts SVN pour travailler dessus avec GIT, je me retrouve chaque fois avec la même erreur :
Temp file with moniker 'svn_delta' already in use at /usr/share/perl5/Git.pm line 1022. avec git 1.7.1 et Subversion 1.6.12

Après quelques recherches infructueuses une piste et une solution (à mon problème en tout cas). Dans le fichier ~/.subversion/servers j’avais la section suivante :

[global]
http-library = serf

Une simple suppression de cette ligne pour réutiliser Neon par défaut et cela marche tout de suite mieux !
Je ne sais pas vraiment le pourquoi du comment, mais si cela aide quelqu’un à son tour c’est tant mieux !

Pour en savoir plus :
http://git.661346.n2.nabble.com/git-svn-fails-to-fetch-repository-td2151475.html
http://subversion.tigris.org/issues/show_bug.cgi?id=2932

Catégories
Programmation

Subversion – Création d’une archive d’une ou plusieurs révisions

Un première version du script : Permet de créer un zip d’un intervalle de révisions pour un export.
Il reste des améliorations à faire c’est sûr, mais aujourd’hui cela répond à mes besoins du moment !

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/sh
# svndiff2zip.sh
 
# Vérifications
if [ ! $1 ];then echo "svndiff2zip : Pas de dépôt spécifié - obligatoire";exit;fi
if [ ! $2 ];then echo "svndiff2zip : Pas de révision de début spécifiée - obligatoire";exit;fi
if [ ! $3 ];then echo "svndiff2zip : Pas de révision de fin spécifiée - obligatoire";exit;fi
if [ ! $4 ];then echo "svndiff2zip : Pas de destination spécifiée - obligatoire";exit;fi
 
if [ -d $4 ];then echo "svnxport : le répertoire '$4' existe déjà : supprimer ou autre.";exit;fi
 
 
echo "Processing : source($1), revision start($2), revision end($3), target_directory($4)"
 
# Traitement
for myfile in `svn diff -r $2:$3 --summarize $1 | grep -e '^M ' -e '^A ' -e '^AM '`
do
if  [  "$myfile" = "M"  -o  "$myfile" = "AM" -o "$myfile" = "A" -o "$myfile" = "." -o -d $myfile ]
then
 continue
else 
 outfile=`echo $myfile |sed "s|$1||g"`
 dir="$4/$outfile"
 mkdir -p $(dirname $dir)
 
 svn export --force $myfile $4/$outfile >> /dev/null
 echo "export $4/$outfile "
 
 zip -r "$4.zip" $4 >> /dev/null
 
fi
done
Catégories
Programmation

Subversion – Importer un dépôt dans un autre

Problématique :

Il peut arriver d’avoir à réunir deux projets initialement dans deux dépôts SVN distincts pour n’en former plus qu’un. Voici une solution facile à mettre en œuvre et efficace.

Solution :

  1. Création d’un dump complet du site à importer.
    svnadmin dump <path-repository> > file.dump
  2. Préparer le dépôt à recevoir :
    svn mkdir <url-repository>/<new-rep> -m "Nouveau répertoire d'accueil"
  3. Importer l’ancien dépôt :
    svnadmin load --parent-dir <new-rep> <path-repository> < file.dump

Les « commit » sont alors ajoutés dans l’ordre. Par contre les numéros de commit ne sont pas conservés. Cela peut être problématique si dans certains commentaires, pages de blog, des liens vers des commits particuliers ont été indiqués comme cela est possible dans des outils comme Trac, Redmine, …