2010-02-10 7 views
6

J'ai un projet principal sur lequel je travaille, qui comporte plusieurs modules/répertoires. Le projet principal est lié au référentiel svn local. cependant, chaque fois que je m'engage, je voudrais également pousser certains modules/répertoires vers le dépôt de code de Google. Cependant, je veux seulement mettre à jour à partir du référentiel local. Y a-t-il un moyen de le faire automatiquement? mon IDE est emacs 23.svn valider dans plusieurs référentiels

Merci

Répondre

6

Ceci est how the SVN book recommends vous le faites. Cela semble assez douloureux et tourne essentiellement autour d'avoir une copie de travail pour chaque repo et de copier littéralement les changements entre les deux (vous pourriez probablement le faire aussi avec des correctifs SVN).

Vous pouvez également look into using SVK (qui est la couche de distribution pour SVN, en ajoutant la fonctionnalité Git-ish à SVN) pour configurer le référentiel mirroring or merging en repos externe. Attention, la documentation pour SVK est un peu désorganisée. Apparemment, l'aide en ligne de commande est bonne.

4

Chaque copie de travail en points SVN à un référentiel. Ce que vous pouvez faire est d'utiliser svn switch pour modifier votre référentiel pour qu'il pointe vers le référentiel de code Google, avant de mettre à jour et de valider les répertoires que vous souhaitez y stocker. Vous pouvez ensuite revenir en arrière pour pointer votre copie de travail dans votre référentiel standard. Cela dépend, bien sûr, des structures de répertoires qui sont compatibles entre les deux référentiels.

1

Si ce n'est pas le cas, le commutateur SVN n'est pas une solution.

Le commutateur SVN ne se connecte pas seulement (ou commute) un répertoire de travail d'un référentiel à un autre référentiel différent! Il effectue également une mise à jour silencieuse (ou checkout) à partir du nouveau référentiel. Donc, si je ne me trompe pas, toutes les modifications locales dans le répertoire de travail seraient perdues puisqu'elles seraient écrasées par le nouveau référentiel.

Il semble qu'il faille avoir une copie de travail pour chaque dépôt et copier littéralement les changements entre le répertoire de travail d'origine et les autres.

1

Il semble qu'il existe une meilleure solution en utilisant svnsync.

  1. Initialiser un référentiel miroir pour la synchronisation à partir du référentiel source. Ceci est la première svnsync opération que vous exécutez sur un dépôt miroir serait-être:

    svnsync initialize MIRROR_URL SOURCE_URL 
    
  2. Transfert toutes les révisions en attente à partir du référentiel source au dépôt miroir:

    svnsync synchronize DEST_URL 
    
  3. seulement pour des occasions sélectionnées ou spéciales pour la copie des révisions en attente, comme expliqué dans le manuel:

    svnsync copy-revprops DEST_URL [REV[:REV2]