2009-12-30 2 views
17

Est-ce possible avec tortoiseSVN ?:Comment avoir TortoiseSVN geler toujours svn: externals pour les balises

geler Toujours svn:externals pour les balises

le scénario est notre tronc utilisera toujours la révision « HEAD » pour externals, Cependant, lorsque nous créons des «tags», nous souhaitons qu'ils disposent d'un ensemble de révisions permettant aux «externes» de les «geler» correctement à un moment précis.

Mise à jour

Merci à tous pour vos commentaires/informations.

Depuis que je ne pouvais pas trouver tout ce qui répondrait complètement à nos besoins (essayé smartsvn et svncopy.pl) J'ai fait une application de console qui jusqu'ici a passé tous nos cas de test.

Une vue d'ensemble de haut niveau: L'application prend une URL de référentiel puis recherche tous les externes et ajoute la dernière révision de validation pour eux - je fais un svn info et obtiens la "révision de livraison".

L'application fonctionne à la fois avec les fichiers externes et les fichiers externes.

Voici le code source et les fichiers de configuration complets: http://svnxf.codeplex.com/

+1

Qu'en est il de svncopy.pl qui ne vous a pas plu? – kostmo

+0

Veuillez poster des solutions en guise de réponses, pas en questions. –

Répondre

6

J'ai trouvé ce poste aujourd'hui, comme je cherchais une solution au même problème. Finalement, j'ai trouvé que TortoiseSVN dans leur dernière version prend en charge cette fonctionnalité souhaitée: TortoiseSVN 1.7 Release Notes.

Espérons que cela aidera d'autres personnes qui trouvent ce post en faisant des recherches sur le même problème.

0

Vous pouvez spécifier la révision externals:

third-party/skins -r148  http://svn.example.com/skinproj 

Voir svnbook

+0

merci - Je suis à la recherche d'un processus automatisé. – dnndeveloper

+0

Je ne pense pas qu'il existe un moyen de le faire automatiquement, d'autres scripts/programmation vous-même et en utilisant toujours pour le marquage –

6

La meilleure pratique recommandée est d'utiliser toujours révision explicite (pas HEAD) dans les définitions externes. De l'documentation:

Vous devriez sérieusement envisager d'utiliser les numéros de révision explicites dans toutes vos définitions externals. Cela signifie que vous devez décider quand afficher un autre instantané d'informations externes et exactement quel instantané à extraire. & hellip; Pour les projets logiciels , cela pourrait être la différence entre une version réussie et une version échouée d'un instantané plus ancien de votre base de code complexe.

Pour répondre directement à votre question: non, ce ’ est impossible de modifier automatiquement les externals lors de marquage utilisant TortoiseSVN. Cela devra être fait manuellement lors de la création du tag.

+0

Je suis complètement d'accord avec cela pour un tag, mais le tronc utilisera toujours le dernier. – dnndeveloper

+1

Même le coffre ne doit pas utiliser la dernière. Si une modification est appliquée à une dépendance, alors vous avez plusieurs révisions pour lesquelles la construction de votre coffre est brisée. Au lieu de cela, vous devez utiliser des révisions fixes, puis (a) mettre à jour la définition externe (b) mettre à jour votre code pour prendre en charge les modifications de la dépendance, le tout d'un seul coup. –

2

Vous devriez essayer SmartSVN qui convertit facultativement les HEAD-externals en externes fixes lors de la création de tags ou de branches. Vous pouvez trouver cette option (Révisions externes: (o) Laisser tel quel() Fixer tout() Correction sauf ci-dessous) en bas des boîtes de dialogue Ajouter une étiquette/Ajouter une branche.

+0

essayé cela et il semble fonctionner uniquement avec des dossiers externes et pas support de fichiers externes en 1.6 + ... premier client pour obtenir ce bon travail aura un avantage sur le reste! – dnndeveloper

+0

Selon http://www.syntevo.com/smartsvn/changelog.txt SmartSVN 6.5.2 corrige également les fichiers externes. – Mot

3

Vous pouvez essayer svncopy.pl (le trouver sur google) C'est un script Perl qui répond à vos besoins.

+0

Pour les paresseux: https://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svncopy/ – kostmo

1

Je voudrais seconder Michael.

De plus à la recommandation de la documentation SVN:

  • révisions non fixes Utilisation dans svn: externals rend plus difficile à mettre à jour la copie de travail à une révision spécifique (par exemple lors de l'enquête de bug)
  • Connexion du répertoire avec svn : externals seront incomplets qui peuvent fournir de faux renseignements sur les jeux de changement entre les révisions
  • et la fusion peut Branching devenir plus compliquée

Généralement, SVN semble être principalement conçu pour du code contenu dans un répertoire commun. svn: externals (même par nom) est ajouté pour référencer les référentiels externes. Donc, je m'attendrais à d'autres problèmes mentionnés plus haut.

Selon mon expérience, l'utilisation de svn: externals pour les révisions non-fixes provient souvent d'une mauvaise structure dans le dépôt.

Peut être ce n'est pas votre cas, je vous conseille simplement de prendre en compte ces points ...

0

je sais que ce n'est pas pour tortoiseSVN, mais si vous utilisez éclipse avec subversive, vous pouvez faire un clic droit le projet et sélectionnez team-> tag. Subversive gèle les externes par défaut et formate les propriétés assez bien.

+0

merci - Je cherchais aussi pour quelque chose que nous pouvons mettre dans notre construction automatique. – dnndeveloper

1

Mise à jour

Merci à tous pour vos commentaires/informations.

Depuis que je ne pouvais pas trouver tout ce qui répondrait complètement à nos besoins (essayé smartsvn et svncopy.pl) j'ai fait une application de console qui jusqu'ici a passé tous nos cas de test.

Une vue d'ensemble de haut niveau: L'application prend une URL de référentiel puis recherche tous les externes et ajoute la dernière révision de validation pour eux - je fais un "svn info" et obtiens la "révision de livraison".

L'application fonctionne à la fois avec les fichiers externes et les fichiers externes.

Voici le code source et les fichiers de configuration complets: http://svnxf.codeplex.com/