SVN: Doit être ancestralement liées
J'obtiens le message d'erreur ci-dessus lorsque j'utilise la deuxième SVN merge option c'est à dire "Réintégrer une branche/automatique de fusion". Je comprends pourquoi je reçois le message d'erreur c'est parce que lors de la création de la direction générale, j'ai simplement glissé et déposé le projet dans une nouvelle branche du Tronc (en utilisant l'explorateur) au lieu de l'une des techniques suivantes:
- Utiliser la Copie De l'option dans l'explorateur de
- Utilisation Branche/Étiquette option (clic droit sur le projet dans l'Explorateur Windows et sélectionnez TortoiseSVN/Branche/Étiquette)
J'ai trois questions:
- Pourquoi les projets doivent être ancestralement liés? Cette question suggère que SVN est tout simplement un fichier de la comparaison, si cette option est sélectionnée: Quelles sont les différences entre la fusion d'une plage de révisions contre les réintégrer dans le SVN?.
- Faire les deux options ci-dessus, le projet de façon ancestrale liée?
- Fait un simple glisser-déposer du projet du Tronc vers la Direction de la le projet en aucune façon ancestrale liée?
OriginalL'auteur w0051977 | 2013-08-26
Vous devez vous connecter pour publier un commentaire.
La fusion n'est pas simplement de la copie du fichier des modifications d'une branche à l'autre, il s'agit d'une comparaison de la dernier ancêtre commun avec les deux fichiers fusionnés. C'est un trois de fusion.
Disons que vous avez un fichier sur le tronc:
Vous faire une branche de ce fichier.
Sur la branche, vous modifier la ligne #4:
Sur le tronc, vous modifier la Ligne #3 comme
Subversion compare le dernier ancêtre commun (la version du fichier avant toute modification) avec les versions de fichiers vous êtes à la fusion. Si je suis la fusion du tronc à la direction générale, la Subversion voit que j'ai changé de Ligne #3 sur le tronc, mais pas la Ligne #4. Par conséquent, la modification de la Ligne n ° 3 doit être mis au cours, mais la différence dans la Ligne #4 est le résultat d'un changement sur la branche, et je ne devrais pas copier sur la Ligne n ° 4 à partir du tronc
La fusion de fichier ressemble à ceci:
Subversion prend également en compte précédemment fusionnées changements, et les changements que vous souhaitez ignorer. C'est en fait une assez bonne fusion installation, sauf si vous commencez à renommer les fichiers et les déplacer de gros. (C'est censé être corrigé dans la Subversion 1.9).
Donc, pour une fusion à travailler, les deux fichiers doit partagent un ancêtre commun qui peut être utilisé comme une base pour la fusion. Sans elle, Subversion ne seront pas en mesure de dire ce que les lignes d'un fichier ont été changé sur le tronc contre ce qui a changé sur la branche. Sinon, c'est juste copier les fichiers à partir d'une branche à l'autre.
Vous pouvez essayer le --ignore-ascendance paramètre. Qui provoque la Subversion pour traiter la fusion comme un diff.
Ni option (je vais prendre ce que vous pensez de
--reintegrate
vs sans cette option, le projet de façon ancestrale liée. Que vient de faire le branche via lesvn cp
. Le--reintegrate
vs w/o réintégrer a à voir avec la façon dont la fusion doit se produire. Lors de la fusion à partir de votre flux de base (généralement à l'arrière) pour votre ramifiée flux, vous fusionnez les changements qui ont eu lieu sur votre flux de base sur le ramifiée flux. Cela crée de nouvelles révisions. Lorsque vous fusionnez, Subversion voit les nouvelles révisions, et veut fusionner les modifications dans votre flux de base, La réintégration option supprime que cela se passe.Et, lorsque vous réintégrer, vous créez une nouvelle version sur votre flux de base qui est pourquoi vous êtes pas penser à fusionner à partir de votre ramifiée flux retour à votre flux de base une fois que vous utilisez
--reintegrate
. Vous pouvez résoudre ce problème en faisant un--record-only
de fusion à partir de votre direction des flux à votre flux de base juste après--reintegrate
.Dépend le client Subversion. Certains GUI Subversion clients à comprendre un glisser-déposer comme un
svn cp
et pas une simple copie des fichiers vers un autre répertoire. Cependant, TortoiseSVN œuvres par le biais de l'Explorateur Windows, de sorte qu'un glisser-déposer, par défaut, une copie du système de fichiers. Il y a une option lorsque vous cliquez droit sur un glisser-déposer pour faire unsvn cp
au lieu d'un Système de Fichiers de Windows copie.Oui, si vous parlez d'
svn cp
. Qui permettent à la Subversion de savoir comment les différentes branches sont liés les uns avec les autres. La copie avec la version de l'OS de la copie (c'est à dire Windows glisser-copier) n'a pas d'alerte à la Subversion de la relation des branches. Au lieu de cela, la Subversion regarde les fichiers de la direction générale comme étant un jeu complètement différent de fichiers. D'autres systèmes de contrôle de version ne pas subir le même sort, car les branches sont internes à la fichiers. Si vous utilisez TortoiseSVN, cliquez à droite à mesure que vous faites glisser et sélectionnezSVN Copy versioned item(s) here
.Merci. Je suppose qu'un clic droit sur la copie de travail dans l'explorateur windows et en sélectionnant tortoise svn/direction générale est l'équivalent de la sélection de "copier" dans le navigateur de dépôt?
Oui. (Et j'ai du ajouter plus de texte pour être en mesure de sauver ce commentaire)
OriginalL'auteur David W.