2016-02-10 3 views
1

Je suis en train de convertir SVN à partir de CVS en utilisant cvs2svn et nous voulons que la mise en page ait des tronc/tags/branches dans chaque projet. D'abord j'ai essayé ceci:Mise en page des ambiguïtés et des repo

sudo cvs2svn -s /build/svn-test3 /build/cvs2016-02-08 

Qui ne m'a pas donné la bonne disposition. J'ai trunk/tags/branches comme des répertoires de niveau supérieur avec tous mes projets dans le tronc. Alors j'ai commencé déconner avec la méthode de fichier d'options et est venu avec ceci:

cvs_repo_main_dir = r'/build/cvs2016-02-08' 
projects = os.listdir(cvs_repo_main_dir) 
# don't want to convert CVSROOT: 
projects.remove('CVSROOT') 
for project in projects: 
    run_options.add_project(
     cvs_repo_main_dir + '/' + project, 
     trunk_path=(project + '/trunk'), 
     branches_path=(project + '/branches'), 
     tags_path=('tags'), 
     ) 

mais maintenant je reçois un grand nombre d'ambiguïtés et de l'erreur:

cvs2svn ERROR: Problems determining how symbols should be converted: 

Il semble avoir un problème avec tout ce qui est un Tag, une branche ou une importation dans CVS et il n'y avait pas de convention de nommage suivie dans CVS pour les branches et les tags donc il n'y a vraiment aucun moyen de forcer des balises ou des branches avec regex.

Voici les règles de stratégie de symbole que je utilise (je l'ai essayé différentes combinaisons de ceux-ci mais je reçois toujours le même résultat):

global_symbol_strategy_rules = [ 

    #SymbolHintsFileRule('symbol-hints.txt'), 

    #ForceBranchRegexpStrategyRule(r'branch.*'), 

    ForceTagRegexpStrategyRule(r'[0-9]_[0-9]'), 
    ForceTagRegexpStrategyRule(r'RELEASE_'), 

    #ExcludeRegexpStrategyRule(r'unknown-.*'), 

    #ExcludeTrivialImportBranchRule(), 

    ExcludeVendorBranchRule(), 

    UnambiguousUsageRule(), 

    BranchIfCommitsRule(), 


    # Convert ambiguous symbols based on whether they were used more 
    # often as branches or as tags: 
    HeuristicStrategyRule(), 
    # Convert all ambiguous symbols as branches: 
    #AllBranchRule(), 
    # Convert all ambiguous symbols as tags: 
    AllTagRule(), 


    HeuristicPreferredParentRule(), 
    ] 

Deux questions:

  1. Pourquoi est-ce que j'obtiens des ambiguïtés quand j'utilise le fichier d'options et non quand j'utilise les options de conversion par défaut sur la ligne de commande?

  2. Y a-t-il un moyen de le réparer sans passer manuellement par mon fichier symbol-info.txt 4600+ lignes?

Répondre

0

Encore une fois, j'ai trouvé la réponse à ma propre question. Le problème était que dans ma section run_options.add_project, je n'avais pas de section symbol_strategy_rules, donc je passais toutes mes règles.

maintenant pour le prochain défi:

The following paths are not disjoint: 
    Path tags/AF_RELEASE_23 is repeated 10 times 
    Path tags/AF_RELEASE_24 is repeated 10 times 
    Path tags/AF_RELEASE_25 is repeated 10 times 
    Path tags/AF_RELEASE_26 is repeated 10 times 
    Path tags/AF_RELEASE_27 is repeated 10 times 
    Path tags/AF_RELEASE_28 is repeated 10 times 
    Path tags/AF_RELEASE_30 is repeated 10 times 
    Path tags/AF_RELEASE_30_1 is repeated 9 times 
    Path tags/AF_RELEASE_31 is repeated 9 times 
    Path tags/AF_RELEASE_31_1 is repeated 7 times 

Tout le monde pense qu'ils peuvent comprendre avant moi?

+0

C'était simple ... J'avais tous les tags dans le même répertoire pour tous les projets. – CentralScrutinizer

0

J'ai eu vraiment du mal à trouver de bons exemples Voici donc (la partie pertinente) mon fichier final de cvs2svn.options pour tous ceux qui trébuche sur ce poste:

global_symbol_strategy_rules = [ 

    ExcludeTrivialImportBranchRule(), 

    ExcludeVendorBranchRule(), 

    UnambiguousUsageRule(), 

    BranchIfCommitsRule(), 

    HeuristicStrategyRule(), 
    # Convert all ambiguous symbols as branches: 
    #AllBranchRule(), 
    # Convert all ambiguous symbols as tags: 
    #AllTagRule(), 

    # The last rule is here to choose the preferred parent of branches 
    # and tags, that is, the line of development from which the symbol 
    # sprouts. 
    HeuristicPreferredParentRule(), 
    ] 

...

cvs_repo_main_dir = r'/build/cvs2016-02-08' 
projects = os.listdir(cvs_repo_main_dir) 
# don't want to convert CVSROOT: 
projects.remove('CVSROOT') 
for project in projects: 
    run_options.add_project(
     cvs_repo_main_dir + '/' + project, 
     trunk_path=('/projects/'+project + '/trunk'), 
     branches_path=('/projects/'+project + '/branches'), 
     tags_path=('/projects/'+project + '/tags'), 

     symbol_strategy_rules=[ 
      # Additional, project-specific symbol strategy rules can 
      # be added here. 
      ] + global_symbol_strategy_rules, 
     )