2010-05-24 6 views
4

J'ai Subversion configuration typique:poignée renomme dans les branches parallèles

/trunk 
/branches/client-one 
/branches/client-two 
/branches/client-three 

Tronc tient le développement principal et succursales détiennent personnalisations des clients. Maintenant, puis, je change de port à partir du tronc en branches et vice-versa:

[+] /trunk/readme-trunk.txt 
[port] /trunk/readme-trunk.txt -> /branches/client-one/readme-trunk.txt 
[port] /trunk/readme-trunk.txt -> /branches/client-two/readme-trunk.txt 
[port] /trunk/readme-trunk.txt -> /branches/client-three/readme-trunk.txt 

Il fonctionne assez parfaitement, sauf quand j'ai besoin de renommer un fichier. Maintenant, peu importe comment je le fais, je reçois toujours des conflits d'arbres et, selon les étapes que je prends, je perds les modifications locales ou je ne peux plus porter les changements futurs.

Est-il possible de renommer un fichier tout en conservant les modifications de port?

[rename] /trunk/readme-trunk.txt -> /trunk/readme.txt 
[port] /trunk/readme.txt -> /branches/client-one/readme.txt 
[port] /trunk/readme.txt -> /branches/client-two/readme.txt 
[port] /trunk/readme.txt -> /branches/client-three/readme.txt 

[edit] /trunk/readme.txt 
[port] /trunk/readme.txt -> /branches/client-one/readme.txt 
[port] /trunk/readme.txt -> /branches/client-two/readme.txt 
[port] /trunk/readme.txt -> /branches/client-three/readme.txt 

(La plupart des documents sur le sujet implique que les conflits d'arbres se produisent lorsque deux développeurs modifient le même fichier,. Ce n'est pas le cas puisque je suis le seul développeur)

Répondre

1

J'ai lu beaucoup depuis que j'ai posé la question et il apparaît que le changement de nom de fichier est le point faible de la plupart des systèmes de contrôle de source. Quant à Subversion, c'est une de ces choses qui ne peuvent tout simplement pas être faites (comme les fusions avant 1.5).

C'est la solution de contournement qui semble le mieux:

  1. Perform renommage régulière (+ copie supprimer) dans le coffre. Commettre.
  2. Pour chaque branche:
    • révision des variables de # 1 comme la fusion, par exemple, svn merge --record-only (ligne de commande) ou [X] Only record the merge (TortoiseSVN).
    • Effectuez un renommage régulier (copie + suppression).

Vous obtenez pas de conflit d'arbres et, la meilleure partie, les deux fichiers sont toujours considérés comme connexes, de sorte que vous pouvez toujours le port et backport entre les branches.

(Pas vraiment testé sur les répertoires, juste les fichiers simples Commentaires bienvenus.)

Questions connexes