Donné:
Repository_1 - source
Repository_2 - destination
J'ai créé un fichier de vidage de Repository_1/Folder1 à l'aide de la combinaison de svnadmin et de svndumpfilter.
Lors du chargement à partir du fichier de sauvegarde depuis Repository_1/Folder1 dans Repository_2/Trunk tout va bienMAIS
Lors du chargement à partir de Repository_1/Folder1/Sous-dossier (créé un autre cliché pour cela) dans Repository_2/trunk i, obtenez l'erreur suivante:
svnadmin: File not found: transaction '267-89', path 'trunk/Folder1/Sub-folder'
Quelqu'un peut-il expliquer?
Il s'avère que cette structure (dossiers vides) dans la destination doit être pré-créée. Donc, Si vous voulez faire ceci:
Lors du chargement depuis Repository_1/Folder1/Sous-dossier (créé un autre dump pour cela) dans Repository_2/trunk
vous devez créer cette structure dans svn
Repository_2/trunk/Folder1
remarque: vous ne devez créer que les parents, pas le dossier lui-même, alors NE CRÉEZ PAS Repository_2/trunk/Folder1/Sub-folder
Je viens de rencontrer cette erreur, que j'ai attribuée à une mise à niveau récente du serveur et à un cycle svnadmin dump/load
. Le problème était que j'avais configuré le référentiel dans un répertoire différent de celui dans lequel il avait été créé.
Sur l'ancien ordinateur, j'utilisais inetd.conf
pour exécuter svnserve
:
svnserve -r /var/svn/main
et le référentiel était dans/var/svn/main
Cependant, sur la nouvelle machine, j'avais inetd.conf
pointant vers /var/svn
:
svnserve -r /var/svn
L'ancien serveur avait déjà été emprunté. Par conséquent, lorsque j'essayais de valider, le chemin de destination n'existait pas, car j'avais accidentellement ajouté un autre composant à l'URL. svn://Host/source/trunk
est devenu svn://Host/main/source/trunk
.
J'aurais pu le réparer en déplaçant les répertoires, mais j'ai plutôt choisi de réécrire l'URL de la copie de travail en utilisant svn switch --relocate
.
Remarque: un diagnostic rapide pour déterminer s'il s'agit du problème consiste à passer à un répertoire de votre copie de travail, tapez svn info
pour obtenir l'URL du référentiel, puis tapez svn ls <myUrl>
. Si cela donne une erreur No repository found
, alors vous savez que c'est la cause.
vous obtiendrez cette erreur si quelqu'un copiait quelque chose du tronc/dossier1 vers le tronc/dossier1/sous-dossier. étant donné que vous n’avez inclus que trunk/Folder1/Sub-folder dans votre vidage, il ne peut plus trouver le ou les fichiers requis dans trunk/Folder1 et s’arrête avec cette erreur.
pour résoudre ce problème, vous devez vous assurer d'inclure tout ce qui a été la source d'une copie dans le dump.
Comme indiqué dans ce fil , svnrdump
fonctionne différemment de svndump
.
svndump
+ svndumpfilter
:
svnrdump
:
svndumpfilter include
. Par exemple, svnrdump https://server.example.com/svn/repo/branches/1.4
saisira toutes les révisions concernant /branches/1.4.| svndumpfilter include / --drop-all-empty-revs --renumber-revs
supplémentaire.En bout de ligne: svnrdump
fonctionnera probablement mieux.
Le chargement de la sauvegarde échoue car la création de trunk/Folder1
a été filtrée par svndumpfilter. Selon cet article de blog , ces étapes sont nécessaires sur le dump:
Vous pouvez créer trunk/Folder1 dans le dump, en modifiant le dump lui-même et en ajoutant à la première révision le bloc suivant:
Node-path: trunk/Folder1
Node-action: add
Node-kind: dir
Prop-content-length: 10
Content-length: 10
PROPS-END
Ce bloc doit être inséré dans les blocs d'accessoires de la première révision.
Ensuite, le vidage peut être chargé avec svnadmin.