2008-11-18 16 views
10

Nous travaillions sur un design, et pour cela nous avons créé le squelette des classes dans notre branche principale. Maintenant, nous commençons à coder, et pour cela nous avons une nouvelle branche. Donc, ce serait bien si je pouvais déplacer tous les nouveaux fichiers de la branche principale dans la nouvelle branche. Cependant, je ne peux pas les vérifier pour le moment. Alors, est-il possible d'intégrer la liste des changements vérifiée? Merci.Puis-je intégrer des fichiers extraits dans une branche différente sur la base

Répondre

0

Je n'ai jamais trouvé un moyen de le faire avec force, mais vous pouvez au moins l'automatiser partiellement.

Habituellement, quand je devais faire quelque chose comme ça, je vérifiais les fichiers dans la branche où je veux déplacer les choses, puis utilisez WinMerge pour différencier les branches et copier les changements. Une fois cela fait, vous pouvez annuler les modifications dans la branche d'origine et les enregistrer dans la nouvelle branche.

Ce n'est pas la meilleure solution (pas d'extraction automatique/ajout/suppression de fichiers sur la nouvelle branche), mais c'est la méthode la plus rapide que j'ai trouvée.

-1

La réponse facile est - non vous ne pouvez pas. Une rapide lecture des documents de Perforce ne m'a malheureusement pas permis d'en citer un exemple, mais d'après mon expérience, toute tentative de retrait du serveur Perforce entraînera la perte de vos modifications, ce qui vous rendra malheureux. campeur.

Faites une sauvegarde, créez une nouvelle zone de travail sur la nouvelle branche et appliquez de nouveau vos modifications, en utilisant peut-être la stratégie diff/merge décrite dans la réponse de Herms.

+0

Voir le lien ci-dessus sur les travaux de ramification en cours. –

0

Pas vraiment.

Vous pouvez bien sûr simplement ouvrir les fichiers à éditer dans la nouvelle branche et copier manuellement les fichiers modifiés depuis l'espace de travail de votre branche principale vers l'espace de travail de la nouvelle branche. C'est probablement le moyen le plus simple si ce n'est que quelques fichiers.

Here sont quelques scripts qui peuvent être utiles si un plus grand nombre de fichiers sont impliqués. Par exemple, avec le script P4Shelf, vous pouvez créer une archive de tous vos fichiers modifiés, puis les ouvrir automatiquement dans n'importe quelle branche avec les modifications restaurées.

Aussi, consultez quelques other nifty scripts pour Perforce par Jim Tilander.

10

Le site Web de support Perforce explique comment procéder: Perforce Knowledge Base: Branching work in progress. Ce serait plus agréable s'il s'agissait d'une seule étape qui n'exigeait pas l'exécution de huit commandes différentes.

+0

Ceci est la bonne réponse - fait il me charge et est très facile. –

+0

@ user38703: Veuillez le marquer comme la bonne réponse si c'est le cas. –

+2

Ça m'étonne que git soit floué d'être "difficile à utiliser" quand l'équivalent p4 de "git rebase" est de 15 commandes. – RJFalconer

6

Depuis la version 2013.1, le chemin de la branche en cours est shelve le travail et unshelve sur la branche. En détail:

  1. Shelve vos changements en cours:

    $ p4 shelve ... 
    Change 182535 created with 10 open file(s). 
    Shelving files for change 182535. 
    edit //info.ravenbrook.com/project/mps/master/code/arenavm.c#26 
    # etc. 
    
  2. unshelve-les sur la branche (en utilisant l'option -b, qui mappe le nom de fichier par une spécification de branche):

    $ p4 unshelve -b mps/branch/2013-06-05/diag -s 182535 
    ... //info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - must resolve //info.ravenbrook.com/project/mps/master/code/[email protected]=182535 before submitting 
    # etc. 
    
  3. Résolvez toutes les fusions résultant du unshelve, en utilisant p4 resolve -as pour faire rapidement les "sécuritaires", puis doi ng le reste avec p4 resolve comme d'habitude.

    $ p4 resolve -as 
    //gdr-peewit/info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - copy from //info.ravenbrook.com/project/mps/master/code/arenavm.c 
    # etc. 
    $ p4 resolve 
    No file(s) to resolve. 
    

(L'exemple de sortie est d'un vrai cas d'utilisation, je courais tout à l'heure.)

0

reformule la réponse de Gareth Rees ci-dessus en termes simples,

p4 unshelve -b target_branchspec -s changelist 

:)