2009-06-30 9 views
4

J'ai un projet dans SVN et j'ai essayé de le cloner avec git-svn. J'ai suivi l'exemple dans le git-svn docs.git svn clone ne vérifie pas tous les répertoires

git svn clone svn+ssh://host/path/trunk project_name 

La commande terminée sans msg d'erreur, mais le projet cloné ne contient pas tous les répertoires comme le projet dans SVN.

Au niveau supérieur, mon projet a SVN ...

$ svn ls svn+ssh://host/path/trunk 
README 
Rakefile 
app/ 
config/ 
db/ 
doc/ 
lib/ 
log/ 
public/ 
script/ 
test/ 
tmp/ 
vendor/ 

Après le clonage, je localement ...

README 
Rakefile 
app 
config 
doc 
public 
script 
test 

Il y a aussi SUBDIRS manque.


MISE À JOUR

clonés Expérimentalement un autre projet sur la même hôte. Semblait fonctionner correctement. Quelle est la particularité de celui-ci? Rien que je puisse penser sauf que je l'ai juste créé et importé dans SVN avant le clonage. Cela ferait-il une différence? Essayé de créer un projet complètement nouveau, l'importation de SVN et le clonage. Vous avez le même résultat, les mêmes répertoires manquants.

Répondre

11

Pour autant que je peux dire, git ne pas pistes répertoires vides:

http://git.or.cz/gitwiki/GitFaq#CanIaddemptydirectories.3F:

qui est, les répertoires ne doivent être ajoutés au référentiel, et ne sont pas suivis de leur propre chef.

Est-ce que cela a du sens? Les répertoires manquants sont-ils vides?

+0

Oui, ce sont les répertoires vides qui n'ont pas été extraits de SVN. Merci. – Ethan

+0

Bonne prise. +1 – VonC

+0

J'ai eu un problème similaire. Selon le lien, Git ne suit pas les répertoires. Il suit les fichiers. Donc, aucun fichier dans un répertoire ne signifie que Git ne le sait pas. – seanmrafferty

1

Etes-vous sûr que votre SVN n'utilise pas svn:external (voir les commentaires)?
Plus de détails sur ce processus dans l'article "moving from svn to git"

svn-git devrait vraiment vous avertir d'une certaine manière qu'il ne supporte pas externals allant chercher.
Ce que j'ai appris en notant que le svn log n'avait aucun checkins de ces dossiers et a vu alors quand j'ai fait un svn checkout propre qu'il cherchait des externals pour le répertoire de fournisseur/plugins. Par conséquent, j'ai décidé d'insérer textuellement le répertoire vendor/plugins, de détacher la référence externe et de passer aux sous-modules git lors de la mise à niveau.
Ce que je voulais vraiment faire, mais ne voit pas comment, était de référencer le code du plugin comme une URL http et garder comme un sous-module, de sorte que j'aurais une référence pratique à l'emplacement de la source et la révision

+0

Merci. Je suis sûr à 100% que cela n'arrive pas ici. Je vais vérifier le lien. – Ethan

+0

@Ethan: d'accord, je quitte le poste pour information. Vous pouvez poster votre propre réponse si vous trouvez la cause première, et sélectionnez-la comme officielle. – VonC

+0

Merci pour l'aide. Je pense que je dois faire quelques lectures et acquérir une meilleure compréhension générale du fonctionnement de git. – Ethan

1

Vous pouvez essayer

svn2git

ou

git svn clone svn+ssh://host/path project_name --trunk=trunk/* 

Il y a une certaine forme de clonage profond dans git 1.6+, mais je ne suis pas sûr si cela est la bonne syntaxe

+0

Merci. J'ai vérifié svn2git sur Github. Je vais essayer quand je peux. – Ethan

Questions connexes