2010-10-04 8 views
3

A git svn clone avec --stdlayout obtiens-moi plusieurs branches si le dépôt SVN source a plusieurs branches (et tags). Je veux pousser tous à un autre repo. Le git svn clone semble avoir récupéré tout l'historique pour toutes les versions. Est-ce une question de donner de meilleures instructions à Git Push?git et git-svn et plusieurs branches et pousser et chercher

Voici mon intention de flux de travail peut-être mal orientée. Exécutez git svn pour cloner svn dans un dépôt privé.

  1. pousser à une prise en pension partagée gérée avec gitosis
  2. faire une branche de travail partagé
  3. diverses personnes branches repo, gestion privée font gitosis, et se fondre dans la branche de travail partagé.
  4. Je retire du rapport partagé retour à celui que j'ai créé à l'étape 1, fusionner au tronc, et dcommit.

Voici la sortie de git branch -a après avoir exécuté le git svn clone.

/Users/benson/x/tsk/tsk_git_svn git branch -a 
* master 
    remotes/origin/master 
    remotes/sleuthkit-3.0 
    remotes/sleuthkit-3.1 
    remotes/tags/sleuthkit-3.0.0 
    remotes/tags/sleuthkit-3.0.1 
    remotes/tags/sleuthkit-3.1.0 
    remotes/tags/sleuthkit-3.1.0b1 
    remotes/tags/sleuthkit-3.1.1 
    remotes/tags/sleuthkit-3.1.2 
    remotes/tags/sleuthkit-3.1.3 
    remotes/tags/sleuthkit-3.1.3b1 
    remotes/tags/sleuthkit-3.2.0b1 
    remotes/tags/sleuthkit-3.2.0b2 
    remotes/trunk 

Répondre

2

vous pouvez essayer un git push --mirror pour être sûr de pousser toutes les références d'un git à un autre:

de git push:

--mirror 

Au lieu de nommer chaque arbitre pour push, spécifie que toutes les références sous refs/ (qui inclut mais n'est pas limité à refs/heads/, refs/remotes/ et refs/tags/) être mis en miroir dans le référentiel distant.
Les références locales nouvellement créées seront poussées vers l'extrémité distante, les références mises à jour localement seront mises à jour de force sur l'extrémité distante et les références supprimées seront supprimées de l'extrémité distante.

Mais je recommend svn2git (si vous ne prévoyez pas de mettre à jour régulièrement votre repo svn), afin d'obtenir des étiquettes réelles au lieu de « branches » pour les tags.

+0

merci beaucoup. Courir push --mirror montre des signes de pousser tout cela. Mais git clone sur le repo qui en résulte ne les montre pas dans les résultats. – bmargulies

+0

@bmargulies: Lorsque vous 'push --mirror' de' gitRepo1' à 'gitRepo2', vous devriez tout avoir sur' Repo2'. Mais pourquoi cloneriez-vous alors 'gitRepo2'? Ou voulez-vous dire git clone le premier repo (celui que vous devriez essayer de pousser --mirror')? – VonC

+0

J'ai édité pour clarifier mes plans peut-être stupides. Je vais regarder votre outil alternatif, aussi bien. – bmargulies

0

Si vous avez un accès à votre serveur SVN, je recommande deux étapes solution:

$ subgit install path/to/svn/repository 
$ cd path/to/svn/repository 
$ git push --all <target Git repository> 

Notez que la cible dépôt Git doit être nue pour éviter les problèmes (créé par la commande git initialisation --bare)