Je travaille sur un projet qui n'a pas de structure de répertoire trunk/branches/tags - c'est-à-dire. tout est dans la racine du repo svn.
Je voudrais créer un répertoire de coffre et dans le répertoire racine et déplacer tout dans le répertoire racine dans le nouveau répertoire de coffre.
Quelle est la meilleure façon de procéder?
La première chose que j'ai considérée était
svn mkdir trunk
(for each file or directory that is not called trunk: )
svn mv FILEorDIR trunk/
Mais cela supprime efficacement chaque fichier, puis l'ajoute à nouveau. Y a-t-il un meilleur moyen?
Merci.
Ceci est similaire à la façon dont je l'ai fait dans le passé. Votre solution en fait copie chaque fichier, puis supprime l’original. En raison de la manière dont Subversion implémente les copies, l'historique de chaque fichier est préservé.
Ceci fait, vous pouvez pointer les extractions existantes vers le nouvel emplacement à l'aide de svn switch
.
J'ai eu exactement le même problème et je l'ai résolu après avoir parcouru plusieurs pages différentes (celle-ci comprise). Voici ma solution:
Remarque: Avant de commencer, si vous envisagez d'utiliser svn switch
pour conserver votre copie de travail et éviter de consulter à nouveau le référentiel, il est préférable de vous assurer que votre copie de travail est à jour et qu'elle ne contient aucune modification non validée.
Avec la solution ...
//REPO_URL = The URL for the repo on the SVN server.
//In my case it was https://IP_ADDRESS:PORT/svn/my_repo
//Make the trunk dir in the root of your SVN repo
svn mkdir REPO_URL/trunk -m "making trunk dir"
//Move everything from your root dir to your new trunk dir
svn move REPO_URL/A_FOLDER REPO_URL/trunk/A_FOLDER -m "moving folders to trunk"
svn move REPO_URL/ANOTHER_FOLDER REPO_URL/trunk/ANOTHER_FOLDER -m "blah"
svn move REPO_URL/A_FILE.TXT REPO_URL/trunk/A_FILE.TXT -m "moving files to trunk"
//Keep going until you've moved everything from your root dir to the trunk dir...
Alors maintenant, sur votre serveur SVN, tout se trouve dans le dossier Trunk. Sucré!
Mais mon repo est de 60 Go et sur un serveur distant. Je préfère ne pas vérifier cela à nouveau. svn switch
vous permettra de pointer votre copie de travail existante vers le nouveau répertoire trunk
afin que vous puissiez continuer à travailler avec la copie que vous avez. Accédez au dossier racine de votre copie de travail et exécutez svn switch REPO_URL/trunk --ignore-ancestry
. At revision X
où X
est la révision après le déplacement de tous vos fichiers du répertoire racine dans le répertoire de la ligne réseau. C'est tout! Peut-être faire une mise à jour SVN pour faire bonne mesure :)
Si vous utilisez Eclipse IDE et Subclipse for SVN, vous pouvez créer des dossiers dans SVN, déplacer tous les fichiers/répertoires de la racine dans le répertoire trunk, puis extraire le nom du projet/trunk vers votre espace de travail Eclipse .. .
Voici comment utiliser la méthode svn + ssh pour créer le dossier "trunk" dans la racine svn sous unix. "nom du projet" est la racine "Identifiant" lorsque vous créez le projet dans svn:
svn mkdir svn+ssh://username@Host/projectname/trunk -m "Create the trunk folder"
Vous voudrez peut-être regarder dans l'outil svnadmin.
Pour être honnête, je n'ai jamais essayé cela auparavant, et vous obtiendrez probablement une réponse de quelqu'un qui l'a fait, mais vous pouvez travailler à partir de quelque chose comme ceci:
Vous devriez pouvoir créer un nouveau référentiel, y créer un répertoire "trunk", puis vider votre référentiel précédent dans le "trunk".
Ancien post mais moi aussi j'ai eu le même problème avec tous mes repos étaient dans la racine et pas dans les troncs. Cela posait un problème lors de l’essai d’une simple commande git svn clone
. Après des heures d’essais et d’erreur, c’était simple:
git svn clone --username byname http://www.MySVNserver.com:81/repos/project1 --no-metadata --trunk=.