2012-09-10 7 views
2

Au travail, nous cherchons à améliorer notre façon de travailler actuelle et nous pensons que Git pourrait peut-être résoudre notre problème.Comment migrer vers Git à partir de cette configuration (svn)

Notre repo actuel est hébergé dans SVN et ressemble à ceci:

MAIN ---trunk 
    ---bugfix 
CUSTOMER1 
    ---trunk 
    ---bugfix 
CUSTOMER2 
    ---trunk 
    ---bugfix 

Maintenant vient ici la blague :) Customer1 et 2 sont basiquement basés sur les principaux, mais le projet principal personnalisations nécessaires et ils ont décidé de diviser les en deux branches et retravailler plusieurs codes partagés de MAIN.

Il est arrivé au point que vous ne pouvez pas fusionner MAIN en client1 ou 2. Parce que beaucoup de code a été écrasé. Lorsque nous appliquons une nouvelle fonctionnalité ou un nouveau correctif, nous devons éditer manuellement le code de MAIN, customer1, customer2 et EVEN dans certains cas, les branches de correction de bug seperatly. Nous passons 30 minutes à coder un correctif et 30 minutes à le coller dans les autres branches. Oui, nous sommes conscients qu'il s'agit d'une mauvaise façon de travailler, mais nous voulons changer cela. J'ai quelques connaissances git décent et je sais que plusieurs autres projets fonctionnent comme ça, regardez @ chiliproject par exemple. Basiquement, nous aimerions une telle configuration peut-être:

MAIN --- develop 
    --- feature 
    --- master 
    --- bugfix 
    \ 
    customer1 
      --- ... 

    \ 
    customer2 

Peut-être 3 dépôts au total, où le client 1 et 2 sont basés hors MAIN. Lorsque nous appliquons un nouveau code à MAIN, nous pouvons simplement l'insérer dans customer1 et customer2. Quelqu'un pourrait-il faire une suggestion sur la façon dont nous pouvons résoudre ce problème?

J'ai également essayé d'ajouter un repo à distance à client1, la télécommande MAIN. quand je récupère la dernière révision, j'obtiens tous les diffs de MAIN. Évidemment, puisque le code est assez différent pour le moment, je ne veux pas fusionner cela. Cependant je voudrais tirer dans la future revision1, qui contient seulement un patch à hello.php par exemple.

Merci

+0

Pourquoi voulez-vous que customer1 et customer2 soient des repos séparés plutôt que des branches sur le principal repo? Vous pouvez facilement utiliser des branches de branches dans git. –

+0

Oui, vous avez raison. C'est vraiment une exigence que je pensais juste que ce serait une bonne idée;) – Sam

+0

Pouvez-vous fournir la disposition réelle du répertoire du repo SVN? SVN ne fait que copier des opérations pour les branches, donc c'est très flexible, mais git traite les branchements et les copies différemment, donc vous devez lui dire quelles sont vraiment les branches. –

Répondre

1

Ce petit tutoriel peut vous aider à: migrante http://git-scm.com/book/en/Git-and-Other-Systems-Migrating-to-Git

Que ce que vous voulez/besoin est possible que reste inconnu pour moi, mais encore, il pourrait aider. Je l'ai trouvé sur le site officiel de Git http://git-scm.com/

Espérons que cela aide. :) (Si cela fait partie d'un commentaire, je suis désolé, je ne peux pas vraiment poster de commentaires dans la question principale pour une raison quelconque.)

+0

Si cela aide, s'il vous plaît n'oubliez pas d'upvote ma réponse, et aussi de l'accepter comme une réponse. C'est le meilleur merci de me donner. :) – greduan

Questions connexes