2010-08-03 6 views
0

Hé les gars, je passe à la subversion.svn; utiliser des copies paresseuses pour les versions existantes (branches) sur la validation initiale

J'ai 2 sites différents basés sur la même base de code avec de grandes différences (ils diffèrent d'environ 15%). Les sites ont tous les deux> 10K fichiers. Quand je développe quelque chose pour 'A', je synchronise parfois 'B' avec les changements, ou les changements peuvent être spécifiques à 'A', ou vice versa.

Donc je pense qu'il sera logique de les avoir comme deux branches dans le même repo, et le tronc peut être vide pour le moment.

Je sais qu'une compression similaire s'appliquera pour le système de fichiers svn de toute façon, mais sera-t-il complètement correct si je les commets initialement comme deux branches? Ou devrais-je;

  • créer & commettras la structure de dossier par défaut,
  • commettras « A » comme la première branche,
  • copie 1ère branche comme 2ème branche
  • mise à jour la copie de travail,
  • supprimer la 2ème branche dans la copie de travail,
  • copier le site «B» vers la 2e branche de la copie de travail,
  • valider

afin que le serveur connaisse (ou pas?) Les fichiers inchangés entre les branches, et les garder comme des copies paresseuses? Btw, certaines dates de fichier peuvent différer bien qu'ils aient le même contenu, comme d'habitude.

Répondre

0

Je pense que vous êtes sur la bonne voie afin de minimiser la quantité de stockage dans le SVN.

je recommande la technique suivante:

  • Commit "A" comme une branche dans la prise en pension
  • copie à distance (aka branche) "A" dans la nouvelle branche "B" - A et B sont maintenant complètement la même
  • départ « B » comme un nouveau projet/dossier (en dehors de votre « a » -travailler dir)
  • ajouter les fichiers modifiés dans « B » (je suis sûr que la modify -date ne comptera pas comme un diff)
  • valider "B"

Bonne chance!

+0

Merci Stefan, bonne description! =) – SuperDuck

+0

wow, pas aussi facile qu'il semble =) au lieu d'ajouter les fichiers modifiés dans «B», j'ai eu l'intention de vider «B», mettre tous les fichiers et commettre, afin de se débarrasser des fichiers et dossiers supprimés. En raison de dossiers .svn manquants, cela n'a pas fonctionné. Ensuite, j'ai synchronisé la copie de travail avec le dossier original 'B', en ignorant les dossiers 'svn', donc j'ai été capable de remplacer les fichiers modifiés et de me débarrasser des fichiers supprimés. Cependant maintenant, il devrait y avoir des dizaines de dossiers qui sont vides et doivent être supprimés, mais le programme diff ne les affiche pas car ils contiennent des dossiers 'svn', donc ne sont pas vraiment vides. – SuperDuck

+0

Je me demande toujours si l'engagement direct de deux branches fera la même chose. Comme, svn peut garder chaque fichier/pièce une seule fois dans le repo, et juste insérer des gestionnaires dans le système de fichiers dans toutes les révisions. Si cela fonctionne de cette façon, peu importe que nous validions le même fichier à deux endroits différents, ou à deux révisions différentes, ou que nous fassions une branche, le résultat serait le même dans la base de données. Je dois essayer cela si je peux trouver un peu de temps pour analyser le db. – SuperDuck

0

A effectué quelques expirations. Eh bien, il s'avère que SVN conserve toujours une seule copie d'un contenu, si un fichier avec le même contenu est validé dans la même révision, dans une révision différente, ou est dérivé d'un autre fichier. Ils font tous référence à un hachage et récupèrent le contenu du premier commit. Donc, en ce qui concerne les moyens de taille, un commit initial avec toutes les branches est complètement ok, même avec une taille de repo légèrement plus petite en raison de moins de révisions.

Aller avec le chemin 'branchement' ajoute une information de branche dans la révision. Cependant, c'est seulement utile pour la référence lisible par l'homme, et je pense que ne sera pas important ou même significatif dans le commit initial.Il peut également être écrit dans la description de commit si désiré.

Questions connexes